如何将手势识别器添加到UIImageView?

在项目中,有一个UIView myView和一个UIImageView myImage,位于myView,views层次结构之后:

的UIWindow
| – UIImageView(myImage)
| – UIView(myView)[整个屏幕]

然后在ViewController的myImage中添加一个手势识别器

 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; tapGesture.numberOfTapsRequired = 1; [myImage addGestureRecognizer:tapGesture]; 

但手势不会影响myImage,myImage具有setUserInteractionEnabled:YES 。 这只会影响myImage放在myView前面,我该如何解决这个问题?

你的UIView显然是在触及到UIImageView之前拦截的。

你可以把你的UIImageView放在你的UIView ,或者在UIView上禁用用户交互,这样它就不会拦截触摸。

如果您需要更细的谷物来捕捉触摸事件,您可以:

  • 把你的UIView放在UIImageView顶部,如果它是为了devise的目的(如果它掩盖了UIImageView的一些例子),但不抓住事件( userInteractionEnabled = NO ),并使用UIImageView下的不同的UIView实际上捕捉UIImageView之外的事件
  • 让你的UIView保持在UIImageView之上并保持捕获事件( userInteractionEnabled = YES ),但是通过inheritance你的UIView并重载pointInside:withEvent:或者hitTest:withEvent:方法来过滤通过它的事件。

有关更多信息, 您应该阅读与事件处理有关的专用Apple编程指南

我的代码:

 UILongPressGestureRecognizer *press = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(hasLongPressed)]; [press setMinimumPressDuration:0.1f]; //1ms press.delegate = (id)self; [self.DGEMLogo addGestureRecognizer:press]; 

两个属性是必要的

1.)添加GestureRecognizer到你的UIImageView(self.DGEMLogo)[self.DGEMLogo addGestureRecognizer:press];

2.)将你的UIImage属性Interaction设置为TRUE

就这样。