如何取消LongPressGesture以便PanGesture可以识别

时间:2013-11-25 10:15:35

标签: ios objective-c uigesturerecognizer

我与UIGestureRecognizer atm合作创建了一些类似地图的程序。

我的工作要求我分别听长按手势和平移手势,这样每个人都可以自己完成任务。 但在一个案例中,我需要先听长按才知道选择了哪个对象。在那之后,当我开始移动我的手指(不抬起它)时,那个物体也会移动。这有点像在谷歌地图中拖动标记。但是因为我的长按识别器已经被触发,所以平移手势识别器在我再次在屏幕上显示之前没有起火。

我试过像

这样的东西
recognizer.enabled = NO;
recignizer.enabled = YES;

但它根本没有帮助。

所以我想知道无论如何在识别(UIGestureRecognizerStateBegan)之后取消长按,所以当我开始移动时,平移手势识别器会立即触发。或者我必须使用UIResponder使它工作?

感谢您的建议。

1 个答案:

答案 0 :(得分:1)

您可以在长按后实际使用UILongPressGestureRecognizer来检测平移手势。唯一需要注意的是,由于UILongPressGestureRecognizerUIGestureRecognizer的子类,因此-translationInView:中没有UIPanGestureRecognizer这么方便。

你可以通过跟踪长按后触摸移动的位置来自行完成这些计算,因为它会继续触发绑定到手势识别器的动作。

看看this question,用长按手势计算翻译可能会有所帮助。