两个UIGestureRecognizer

时间:2011-05-27 09:15:27

标签: ios uigesturerecognizer

我有两个UIGestureRecognizers用于同时识别两者的视图。我希望完成或取消主要手势以杀死其他手势。那么,有没有办法杀死主动手势,即强制取消主动手势识别器?

2 个答案:

答案 0 :(得分:2)

由于您只想在主要手势结束或取消时终止辅助手势,请在主要手势的手势处理程序中执行此操作。

- (void)handleGesture:(UIGestureRecognizer*)gesture {
    ...
    if ( gesture.state == UIGestureRecognizerStateEnded || gesture.state == UIGestureRecognizerCancelled ) {
        secondaryGesture.enabled = NO;
        secondaryGesture.enabled = YES;
    }
}

这似乎是取消手势的唯一方法。

<小时/> 您可以使用requireGestureRecognizerToFail:来声明依赖项。

[secondaryGesture requireGestureRecognizerToFail:primaryGesture];

这将在成功识别主要手势时终止辅助手势。如果取消主要手势,则不提供此类工具。你可以在enabled上的主要手势的手势处理程序中将辅助手势的NO标记翻转为YESUIGestureRecognizerStateCancelled,但这看起来并不优雅。 / p>

答案 1 :(得分:0)

根据您可能想要同时拥有的手势。我遇到了手势相互干扰的问题,并且有一段时间与此解决方案类似。我试图使用的两个手势是捏和旋转手势。理想情况下,我希望用户能够在两者之间平滑过渡,而不必取消我设法实现的目标。我已经写了how I did it here and provided a how to video我希望这可以帮助别人。