iOS 捏合手势与滑动手势冲突
Posted
技术标签:
【中文标题】iOS 捏合手势与滑动手势冲突【英文标题】:iOS Pinch Gesture conflicts with Swipe Gesture 【发布时间】:2015-01-12 02:57:17 【问题描述】:我创建了两个滑动识别器:swipeRightRecognizer
& swipeLeftRecognizer
和一个捏识别器:pinchRecognizer
。
当我捏合/捏出时,捏合事件和向左滑动识别器事件都被捕获。
我试过了
[swipeLeftRecognizer requireGestureRecognizerToFail:pinchRecognizer];
[swipeRightRecognizer requireGestureRecognizerToFail:pinchRecognizer];
但它不起作用。
如果没有更好的方法,我打算捕捉触摸次数。我需要区分单指滑动和捏合。
有没有一种简单的方法可以区分捏合手势和滑动?
【问题讨论】:
有点过时了:在touchBegan
中计算touches
怎么样?
我对手势识别器不太熟悉。只是想知道是否有一种简单的方法可以区分捏和滑动。如果没有,如果没有更简单的方法,这就是我打算做的,计算触摸次数。
我在下面发布了一个更好的方法。
【参考方案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;
【讨论】:
我发现一个隐藏的错误以某种方式导致捏干扰了滑动。在我修复了那个错误之后,捏和滑动可以很好地协同工作。无论如何,谢谢你的建议。下次是否需要使用shouldBeRequiredToFailByGestureRecognizer,记得加这个UIGestureRecognizerDelegate方法。这当然是一种更好的方法。以上是关于iOS 捏合手势与滑动手势冲突的主要内容,如果未能解决你的问题,请参考以下文章
Angular 2 RC 2 使用移动手势(滑动、捏合、旋转)