触及UIImageView的事件处理程序

时间:2010-03-11 17:58:43

标签: iphone uiimageview touch

我刚刚接受了iPhone开发的陈述,似乎无法找到答案,我正在寻找我想做的事情。

似乎我应该能够以编程方式创建一个UIImageView,然后为它的触摸功能设置一个事件处理程序。

在c#中我会有类似

的东西

按钮b =新按钮(); b。点击+ =我的处理程序代码

现在我有了这个

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];

如何覆盖触摸事件需要做什么?

感谢

7 个答案:

答案 0 :(得分:9)

虽然这不是你问题的完整答案,但我认为以下解决方案可能比做“隐形按钮解决方法”更好。 简单地从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."

}

希望这会有所帮助...

答案 1 :(得分:5)

我有一个主视图,其中包含一些像“约”这样的图标来打开一个关于视图。 在相应的控制器(mainview)中,我为touchesBegan添加了一个事件处理程序。 此外,我需要检查哪个视图已被“触摸”,因为视图上有更多图标。 我的UIImageView实例是“aboutImg”,需要检查用户交互(即UI构建器 - >属性检查器视图)。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if ([touch view] == aboutImg){
        [self ShowAbout];
    }
}

确保选中“已启用用户互动”。这是最简单的解决方案

答案 2 :(得分:3)

只需使用自定义UIButton,将图像作为背景图像。

答案 3 :(得分:0)

我找不到直接使用UIImageView的方法。但是如果你对它进行子类化并覆盖nextResponder方法以在你的控制下返回一个委托,你可以做你想要的事情。将委托公开为子类的属性,然后您可以传递触摸事件的委托并随时更改它。

答案 4 :(得分:0)

我看到其他答案建议在UIImageView下面放一个隐形按钮,将图片视图设置为userInteractionEnabled: NO,然后让触摸传递到按钮。

答案 5 :(得分:0)

你需要与UIImageView无关,你可以使用类型为自定义的UIButton并在其中添加补充内部动作... set button.imageview setImage: I-E:

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,然后使用触摸事件。

答案 6 :(得分:0)

将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];