请问requireGestureRecognizerToFail的作用是什么?

8

有人可以告诉我下面这行代码具体是做什么吗? 我已经查阅了苹果公司的文档,但是没有得到确切的解释。

[scrollview.panGestureRecognizer requireGestureRecognizerToFail:swipeRightGesture];
3个回答

15
当用户进行向右滑动手势时,平移手势会失败(被忽略)。

3
被接受的答案只部分正确...
根据requireGestureRecognizerToFail:文档
引用块:

接收器转换到的状态取决于其他手势识别器[第二个参考手势识别器]的情况:

  • 如果其他手势识别器转换到UIGestureRecognizerStateFailed,则接收器转换为其正常下一个状态。

  • 如果其他手势识别器转换为UIGestureRecognizerStateRecognized或UIGestureRecognizerStateBegan,则接收器转换为UIGestureRecognizerStateFailed。

这意味着在以下代码中:
[scrollview.panGestureRecognizer requireGestureRecognizerToFail:swipeRightGesture];

当用户进行滑动手势时,只有当该滑动手势正常进行时,平移手势才会失败。但是,如果该滑动手势失败,平移手势将会继续进行。

3

一个示例,当您想要单击手势需要双击手势失败时,可以使用[_singleTap requireGestureRecognizerToFail:_doubleTap]。双击包括两次单击,因此如果没有requireGestureRecognizerToFail,单击手势委托方法可能会调用两次。

因此,在这里,滑动手势可能会触发平移手势,当您实际滑动时,将调用panGestureRecognizer委托方法。

如果添加[panGestureRecognizer requireGestureRecognizerToFail:swipeRightGesture],一旦swipeRightGesture过渡到UIGestureRecognizerStateRecognized或UIGestureRecognizerStateBegan状态,panGestureRecognizer立即过渡到UIGestureRecognizerStateFailed状态。

只有当swipeRightGesture还没有过渡到上述RecognizerStates时,panGestureRecognizer才能响应,过渡到UIGestureRecognizerStateBegan并调用panGestureRecognizer委托方法。


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