uiimageview의 이벤트 핸들러를 터치합니다
-
19-09-2019 - |
문제
나는 방금 iPhone 개발에 대해 언급되고 있으며 내가하고 싶은 일을 찾고있는 대답을 찾을 수없는 것 같습니다.
UiimageView를 프로그래밍 방식으로 만들고 터치 기능에 대한 이벤트 핸들러를 설정할 수 있어야합니다.
C#에서 나는 모양이있는 것을 가질 것입니다
버튼 B = 새 버튼 (); b.click+= 내 핸들러 코드
지금 나는 이것을 가지고있다
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 141.0f, 151.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
myImage.userInteractionEnabled = YES;
[myImage setImage:[UIImage imageNamed:@"myImage.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];
터치 이벤트를 무시하려면 어떻게해야합니까?
감사해요
해결책
질문에 대한 완전한 답은 아니지만 다음 솔루션이 "Invisible-Button-workaround"를 수행하는 것이 더 좋을 것이라고 생각합니다. UIIMageView의 단순히 하위 클래스를 수행하고 다음 방법을 무시합니다.
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
//your UIImageView has been touched :)
//event -> "A UIEvent object representing the event to which the touches belong."
//touches -> "A set of UITouch instances in the event represented by event that represent the touches in the UITouchPhaseEnded phase."
}
도움이 되었기를 바랍니다...
다른 팁
"About"와 같은 아이콘이있는 메인 뷰가 있습니다. 해당 컨트롤러 (MainView)에서 TouchesBegan에 대한 이벤트 핸들러를 추가했습니다. 또한보기에 더 많은 아이콘이 있기 때문에 어떤보기가 "터치 된"뷰를 확인해야합니다. 내 UIIMAGEVIEW 인스턴스는 "AboutIMG"이고 사용자 상호 작용을 확인해야합니다 (예 : UI Builder-> Attributes Inspector of View).
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch view] == aboutImg){
[self ShowAbout];
}
}
"사용자 상호 작용 활성화"를 확인하십시오. 이것은 가장 쉬운 솔루션입니다
이미지를 배경 이미지로 사용하는 사용자 정의 Uibutton 만 사용하십시오.
직접 할 수있는 방법을 찾지 못했습니다. UIImageView
. 그러나 당신이 그것을 서브 클래스하고 그것을 무시한다면 nextResponder
방법 통제하에 대의원을 반환하는 방법은 당신이 후에 할 수 있습니다. 대의원을 서브 클래스의 속성으로 노출 한 다음 터치 이벤트를 위해 대의원에 전달하여 언제든지 변경할 수 있습니다.
다른 대답을 보았습니다 userInteractionEnabled: NO
, 터치가 버튼으로 통과하도록합니다.
UIIMAGEVIEW와 관련이 필요하지 않습니다. UIBITTON을 사용하여 UIBIRTTON을 사용하여 사용자 정의를 사용하고 내부 작업을 추가 할 수 있습니다.
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0,0,100,100); //edit for you own frame
UIImage *img = [UIImage imageNamed:@"myimage.png"];
[button setImage:img forState:UIControlStateNormal];
uiimageview와 함께 가려면 ImageView에 제스처를 추가해야합니다. 그렇지 않으면 uiimageview를 서브 클래스 한 다음 터치 이벤트를 사용할 수 있습니다.
OnClick 이벤트를 UIIMAGEVIEW 또는 UIVIEW에 추가하는 가장 쉬운 방법은 탭 제스처 인식기를 추가하는 것입니다.
UIImage *myImage = [UIImage imageNamed:@"myImage.png"];
UIImageView *myImageView = [[UIImageView alloc] initWithImage: myImage];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action: @selector(onImageViewClicked)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
[self.myImageView addGestureRecognizer:singleTap];
[self.myImageView setUserInteractionEnabled:YES];