【问题标题】:How to cancel LongPressGesture so PanGesture can recognise如何取消 LongPressGesture 以便 PanGesture 可以识别
【发布时间】:2013-11-25 10:15:34
【问题描述】:

我正在使用UIGestureRecognizer atm 创建一些类似地图的程序。

我的工作要求我分别听长按手势和平移手势,所以他们每个人都可以做自己的任务。 但在一种情况下,我需要先听长按才能知道选择了哪个对象。之后,当我开始移动手指(不抬起手指)时,该对象也会移动。这有点像在谷歌地图中拖动一个标记。但是因为我的长按识别器已经触发了,所以直到我再次在屏幕上按标签时,平移手势识别器才触发。

我尝试了类似的东西

recognizer.enabled = NO;
recignizer.enabled = YES;

但它根本没有帮助。

所以我想知道在识别后是否有取消长按 (UIGestureRecognizerStateBegan),所以当我开始移动时,平移手势识别器将立即启动。或者我必须使用 UIResponder 才能使其工作?

感谢您的建议。

【问题讨论】:

    标签: ios objective-c uigesturerecognizer


    【解决方案1】:

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

    无论如何,您都可以通过跟踪长按后触摸移动的位置来自行进行这些计算,因为它将继续触发绑定到手势识别器的操作。

    看看this question,长按手势可能有助于计算翻译。

    【讨论】:

    • 谢谢。我不知道我仍然可以用它来检测平底锅。之前将 allowMovement 设置为 NO。必须稍微修改代码,以便其他功能接受 UILongPress 但现在一切都很好。此外,我只需要查看位置而不是移动了多少,因此更容易。但是想知道是否有其他方法可以解决它?
    猜你喜欢
    • 2010-09-17
    • 2019-10-21
    • 2013-11-09
    • 1970-01-01
    • 2013-04-02
    • 2019-12-20
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多