UILongPressGestureRecognizer 检测手指是不是移动了一定的半径

Posted

技术标签:

【中文标题】UILongPressGestureRecognizer 检测手指是不是移动了一定的半径【英文标题】:UILongPressGestureRecognizer detect if fingers moved certain radiusUILongPressGestureRecognizer 检测手指是否移动了一定的半径 【发布时间】:2013-01-01 23:11:23 【问题描述】:

我有一个这样的 UILongPressGestureRecognizer 设置:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                          初始化目标:自我
                                          动作:@selector(handleLongPress:)];
longPress.numberOfTouchesRequired = 3;
longPress.allowableMovement = 30;

在我的 handleLongPress 选择器中,我正在检查 3 个状态,即 UIGestureRecognizerStateBegan、UIGestureRecognizerStateChanged 和 UIGestureRecognizerStateEnded。 UIGestureRecognizerStateChanged 是否以任何方式与 allowableMovement 属性相关?我只想在手指移动超过 30 像素时触发该状态,但就像现在一样,它会通过最轻微的移动触发。

【问题讨论】:

【参考方案1】:

allowableMovement 是最大移动量,而不是最小移动量。 Apple Documentation

您最好的选择是在检测到任何移动时调用的方法中进行检查,在此检查中,您可以在移动小于一定距离时丢弃任何调用。

UILongPressGestureRecognizer 扩展了 UIGestureRecognizer,它可以在每次调用处理程序方法时返回触摸的位置,查看UIGestureRecognizer class reference

【讨论】:

如何检查移动是否小于一定距离? @thisiscrazy4 查看 UIGestureRecognizer 它允许您检索触摸位置。

以上是关于UILongPressGestureRecognizer 检测手指是不是移动了一定的半径的主要内容,如果未能解决你的问题,请参考以下文章