iOS Pinch Gesture与Swipe Gesture冲突

时间:2015-01-12 02:57:18

标签: ios objective-c ios7 uigesturerecognizer

我创建了两个滑动识别器:swipeRightRecognizer& swipeLeftRecognizer和一个捏识别器:pinchRecognizer

当我捏合/捏合时,夹点事件和向左滑动识别器事件都被捕获。

我试过了

[swipeLeftRecognizer requireGestureRecognizerToFail:pinchRecognizer];
[swipeRightRecognizer requireGestureRecognizerToFail:pinchRecognizer];

但它不起作用。

如果没有更好的方法,我打算赶上接触次数。我需要区分单指滑动与捏合。

是否有一种简单的方法可以区分捏合手势和滑动?

1 个答案:

答案 0 :(得分:1)

According to the docs requireGestureRecognizerToFail:表示第一个手势只是正常,如果第二个手势失败;所以在这种情况下,由于您还没有指定第二个手势失败的任何地方,第一个手势将失败,第二个手势将正常进行。这不是你想要的。

相反,您可以使用shouldBeRequiredToFailByGestureRecognizer: UIGestureRecognizerDelegate方法告诉滑动手势在捏合时失败,例如:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    if ([gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]] && 
        [otherGestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) {
        return YES;
    }

    return NO;
}