首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时禁用多个长按手势

同时禁用多个长按手势
EN

Stack Overflow用户
提问于 2012-05-29 20:47:07
回答 2查看 2.3K关注 0票数 2

我有一个UIView,并且有多个UIImageView's作为它的子视图。我已经将UILongPressGestureRecognizer添加到每个子视图中。我在一个方法中处理这个手势,在发送者UIImageView上执行一些动画。

如果我一次长按两个ImageView's,动画就会中断。

有没有办法同时禁用多个长按手势?即只允许一个UIImageView检测LongPress手势。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-30 01:41:37

你实际上有几种方法来解决你的问题:

将所有图像视图的exclusiveTouch设置为YES。它将阻止将触摸事件传递到同一窗口中的其他视图。

或者,您可以设置当某个识别器移动到Begin状态时忽略其他识别器的标志。

或者,您可以禁用手势识别器(UIGestureRecognizer具有enabled属性),但在委托方法中当前手势识别器除外,并在手势完成时再次启用所有手势识别器。

票数 7
EN

Stack Overflow用户

发布于 2016-07-03 16:36:21

如果我们使用并且我们希望同时只在一个单元上运行,我们也可以解决TableViewController的问题

首先,我们需要在CustomCell中定义一个静态变量:

代码语言:javascript
复制
static var isLongPressInProgress = false

然后在gestureRecognizerShouldBegin中声明我们是否可以使用手势:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10799469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档