我有两个UIGestureRecognizers
用于同时识别两者的视图。我希望完成或取消主要手势以杀死其他手势。那么,有没有办法杀死主动手势,即强制取消主动手势识别器?
答案 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
标记翻转为YES
和UIGestureRecognizerStateCancelled
,但这看起来并不优雅。 / p>
答案 1 :(得分:0)
根据您可能想要同时拥有的手势。我遇到了手势相互干扰的问题,并且有一段时间与此解决方案类似。我试图使用的两个手势是捏和旋转手势。理想情况下,我希望用户能够在两者之间平滑过渡,而不必取消我设法实现的目标。我已经写了how I did it here and provided a how to video我希望这可以帮助别人。