我有一个UIView,并且有多个UIImageView's作为它的子视图。我已经将UILongPressGestureRecognizer添加到每个子视图中。我在一个方法中处理这个手势,在发送者UIImageView上执行一些动画。
如果我一次长按两个ImageView's,动画就会中断。
有没有办法同时禁用多个长按手势?即只允许一个UIImageView检测LongPress手势。
发布于 2012-05-30 01:41:37
你实际上有几种方法来解决你的问题:
将所有图像视图的exclusiveTouch设置为YES。它将阻止将触摸事件传递到同一窗口中的其他视图。
或者,您可以设置当某个识别器移动到Begin状态时忽略其他识别器的标志。
或者,您可以禁用手势识别器(UIGestureRecognizer具有enabled属性),但在委托方法中当前手势识别器除外,并在手势完成时再次启用所有手势识别器。
发布于 2016-07-03 16:36:21
如果我们使用并且我们希望同时只在一个单元上运行,我们也可以解决TableViewController的问题。
首先,我们需要在CustomCell中定义一个静态变量:
static var isLongPressInProgress = false然后在gestureRecognizerShouldBegin中声明我们是否可以使用手势:
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
if let _ = gestureRecognizer as? UILongPressGestureRecognizer {
if CustomCell.isLongPressInProgress == true {
return false
}
return true
}
return false
}您将在case .Began:中将var isLongPressInProgress设置为true,并在case .Ended:中将其设置为false
https://stackoverflow.com/questions/10799469
复制相似问题