如何将手势识别器添加到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
就这样。
- MFmailcomposer有时会发生错误?
- 打开UIButton标题:types“String”的expression式模式不能匹配“String ?!”types的值
- 从AnyObject投射到CGColor? 没有错误或警告
- 将对象从NSMutableDictionary添加到NSMutableArray
- UISearchBar文本字段中的自定义清除button
- UIImageview Animation开始使用for-in循环和animation延迟
- 获取用户的当前位置iOS 8.0
- 如何符合CBCentralManagerDelegate协议?
- 删除UICollectionView中的最后一个单元格会导致崩溃