iOS에서 프로그래밍 방식으로 UIImageView의 이벤트를 클릭하십시오.


95

여기 코드에서 이미지를 표시하고 있습니다.

UIImageView *preArrowImage =[[UIImageView alloc]init ];
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"];
preArrowImage.frame = CGRectMake(20, 60, 10, 30);
[self.view addSubview:preArrowImage];

프로그래밍 방식으로 preArrowImage의 터치 이벤트를 처리하고 싶습니다.


이것은 일부 사용 될 수 있습니다 stackoverflow.com/questions/9008975/...
Gaz_Edge

답변:


250

목표 -c

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)];
singleTap.numberOfTapsRequired = 1;
[preArrowImage setUserInteractionEnabled:YES];
[preArrowImage addGestureRecognizer:singleTap];

-(void)tapDetected{
    NSLog(@"single Tap on imageview");
  }

SWIFT 4.2 / 5

let preArrowImage : UIImageView // also give it frame
let singleTap = UITapGestureRecognizer(target: self, action: #selector(tapDetected))
preArrowImage.isUserInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)

//Action
@objc func tapDetected() {
    print("Imageview Clicked")
}

Swift 2의 경우 다음으로 교체해야합니다 Selector("tapDetected")."tapDetected:"
datayeah

기본적으로 singleTap.numberOfTapsRequired = 1, Happy Coding Thanks
Ravi

'let singleTap = UITapGestureRecognizer (target : self, action : #selector (NavigationViewController.tapDetectedImage))'
Alex22

18

단순히 UITapGesture이미지에를 추가 하되 UserInteraction Enabled로 설정 하는 것을 잊지 마십시오 .

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)];
    [preArrowImage addGestureRecognizer:singleTap];
    [preArrowImage setMultipleTouchEnabled:YES];
    [preArrowImage setUserInteractionEnabled:YES];

6

이제 Swift에서!

let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected"))
singleTap.numberOfTapsRequired = 1

preArrowImage.userInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)


//Action
func tapDetected() {
    println("Single Tap on imageview")
}

4

스위프트 3

있는 UIImageView UserInterAction 가능

 override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)

        if let touch = touches.first {
            if touch.view == self.imgVwPostPreview { //image View property

                //Do your actions
                //self.delegate?.didClickOnCellImageView(indexPath: self.cellIndexPath!)
            }
        }
    }

3

뷰 컨트롤러에서보기와 함께 스토리 보드 사용.
보기는 ImageView, UIView, UILabel, TextField 또는 기타 컨트롤러 일 수 있습니다.


제스처 인식기 중 하나를 선택한 후 컨트롤러로 드래그합니다.
이제 "문서 개요"와 뷰 컨트롤러 xib의 헤더에 표시됩니다.

문서 아웃 라인 및 xib의 제스처 아이콘
UILable로 제스처 드래그
UILable로 제스처 드래그


헤더 파일에서 (IBAction) 메소드 수동 생성


헤더 파일에 IBAction 메소드 생성
이제 핸들러에서 xib의 제스처 아이콘으로 드래그하십시오.
제스처 아이콘과 연결



0

여기 또 다른 옵션이 있습니다. 치트.

내 말은, 옆으로 생각하세요.

원하는 방식, 자르기, 가로 세로 맞춤 등 UIImage를 설정하십시오.

이를 UIView (동일한 크기, 위치 등)로 오버레이합니다.

배경을 clearcolour로 설정하고 클래스를 UIControl로 설정합니다.

이벤트 내부의 터치 업을 핸들러에 가리키면 짜잔합니다.


UIView보다 더 쉬움 : 버튼을 사용하고 텍스트를 삭제합니다. ;)
Neph

0

Xamarin.iOS

UIImageView preArrowImage; // also give it frame
var singleTap = new UITapGestureRecognizer(TapDetected);
singleTap.ShouldReceiveTouch -= TapGesture_ShouldReceiveTouch;
singleTap.ShouldReceiveTouch += TapGesture_ShouldReceiveTouch;
preArrowImage.UserInteractionEnabled = true;
preArrowImage.AddGestureRecognizer(singleTap)

bool TapGesture_ShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
{
    return true;
}

void TapDetected(UITapGestureRecognizer tapGestureRecognizer)
{
    print("Imageview Clicked")
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.