【发布时间】:2014-03-22 14:08:45
【问题描述】:
谁能告诉我下面的代码行到底是做什么的?我已经参考了Apples 文档,但没有得到确切的信息,
[scrollview.panGestureRecognizer requireGestureRecognizerToFail:swipeRightGesture];
【问题讨论】:
标签: ios iphone objective-c uiscrollview uigesturerecognizer
谁能告诉我下面的代码行到底是做什么的?我已经参考了Apples 文档,但没有得到确切的信息,
[scrollview.panGestureRecognizer requireGestureRecognizerToFail:swipeRightGesture];
【问题讨论】:
标签: ios iphone objective-c uiscrollview uigesturerecognizer
当用户做出向右滑动手势时,平移手势将失败(忽略)。
【讨论】:
一个例子,[_singleTap requireGestureRecognizerToFail:_doubleTap],当你想要单击手势时,需要双击手势失败。双击包括两次单击,因此如果没有requireGestureRecognizerToFail 单击手势委托方法可能会调用两次。
所以在这里,滑动手势可能会触发平移手势,然后会在您实际滑动时调用 panGestureRecognizer 委托方法。
如果添加 [panGestureRecognizer requireGestureRecognizerToFail:swipeRightGesture] ,一旦 swipeRightGesture 转换为 UIGestureRecognizerStateRecognized 或 UIGestureRecognizerStateBegan,panGestureRecognizer 立即转换为 UIGestureRecognizerStateFailed。
而且只有swipeRightGesture没有过渡到上面的RecognizerStates,panGestureRecognizer有可能响应,过渡到UIGestureRecognizerStateBegan,调用panGestureRecognizer委托方法。
【讨论】:
接受的答案只是部分正确...
According to the docs 为requireGestureRecognizerToFail:
接收器转换到的状态取决于发生的情况 与 otherGestureRecognizer [第二个引用的手势识别器]:
如果 otherGestureRecognizer 转换为 UIGestureRecognizerStateFailed,则接收器转换为其正常状态 下一个状态。
如果 otherGestureRecognizer 转换为 UIGestureRecognizerStateRecognized 或 UIGestureRecognizerStateBegan, 接收器转换到 UIGestureRecognizerStateFailed。
这意味着在下面的代码中:
[scrollview.panGestureRecognizer requireGestureRecognizerToFail:swipeRightGesture];
当用户做出滑动手势时,只有当滑动手势正常进行时,平移手势才会失败。但是,如果该滑动手势失败,则会继续进行平移手势。
【讨论】: