【问题标题】:Touch Up Inside for a UIImageView为 UIImageView 修饰内部
【发布时间】:2011-06-16 13:16:06
【问题描述】:

我正在尝试实现类似于Touch Up InsideUIButton 的触摸事件。我已经看到一些使用touchesBegan:withEvent 的代码,但看起来我需要在屏幕上滑动一点手指。我其实只是想在图像中触摸

代码:

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {   
    NSLog(@"Image touched!");
}

问候!

【问题讨论】:

  • 有什么特殊原因你不能只使用带有自定义样式和图像的UIButton
  • 其实没有,不过不知道有没有其他办法。
  • 如果您不需要UIButton 提供的功能,您可以直接继承或使用更简单的UIControlUIControl 负责所有令人讨厌的触摸状态管理,因此您不必这样做。自己动手也意味着您的 UI 将与所有其他应用程序的行为略有不同,这可能会让用户感到困惑。
  • @pmjordan 是的,如果您正在使用 Interface Builder 并且想要控制图像的布局(Aspect Fit、Aspect Fill 等),则需要使用 UIImage

标签: iphone uiimageview


【解决方案1】:

您可以使用手势联系UIImageView

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
                         initWithTarget:self action:@selector(ClickEventOnImage:)];
        [tapRecognizer setNumberOfTouchesRequired:2];
        [tapRecognizer setDelegate:self];
        //Don't forget to set the userInteractionEnabled to YES, by default It's NO.
        myImageView.userInteractionEnabled = YES;
        [myImageView addGestureRecognizer:tapRecognizer];

实现ClickEventOnImage函数。

-(void) ClickEventOnImage:(id) sender
{

}

【讨论】:

  • 为我节省了大量时间!谢谢
  • 这太棒了。在 handler 方法中,您可以通过使用 locationInView:(UIView*)view; 查询手势识别器来获取点击的位置;在滚动视图中,返回的坐标包括滚动内容的偏移量。
  • 我们可能应该自动释放 tapRecognizer,以避免内存泄漏。
  • @Ron : 是的 Ron .. 我错过了感谢您指出...或者可能在将它添加到 imageview 之后我们可以发布它...
  • 不要忘记将添加到界面(.h)
【解决方案2】:

UIImageView 在这方面臭名昭著,因为它的userInteractionEnabled 默认设置为NO。您必须通过

来启用它
imageView.userInteractionEnabled = YES;

然后您可以使用手势识别器或普通的touches* 方法来处理触摸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多