如何列出当前活动的手势识别器?

14

我希望能够列出所有当前活动的手势识别器(以便我可以暂时禁用它们)。有没有可能做到这一点?

3个回答

23
使用 UIView 的 gestureRecognizers 属性:
for (UIGestureRecognizer *recognizer in self.gestureRecognizers)
{
    //Do something with recognizer
}

更多阅读: UIView


请注意:如果要查看手势是否处于活动状态(即当前是否被用户的手指使用),您可以检查:BOOL isGestureActive = (recognizer.state != 0);但是,如果.stateUIGestureRecognizerStatePossible,则可能会出现误报。在这种情况下,您应该检查.numberOfTouches != 0 - Albert Renshaw

2

由于某些原因,我在Swift中很难做到这一点,所以以下是最终的解决方法。

var arrayOfGestureRecognizers: [UIGestureRecognizer] = self.topViewController.view.gestureRecognizers! as NSArray as [UIGestureRecognizer]

for item in arrayOfGestureRecognizers {
    println("Gesture Recognizer:\(item)")
}

2
当识别器拥有权限执行某项任务时,您可以为您的类设置一个布尔值并将其设置为TRUE。当您想要禁用它们时,您可以在识别器方法中将该布尔值设置为FALSE。您只需要在执行所需任务之前测试该布尔值是否为true或false即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接