UILongPressGestureRecognizer仅在移动手指时识别

时间:2011-08-01 07:21:16

标签: iphone objective-c

我尝试在我的应用程序中使用UILongPressGestureRecognizer,问题是只有当我移动手指时才会调用此函数。

这是我正在使用的代码:

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(doRewind)];
    [uiNextButton addGestureRecognizer:longPress];

3 个答案:

答案 0 :(得分:3)

我知道我迟到了回答这个问题,但我认为这可能对某人有所帮助。 我遇到了同样的问题。我需要触发事件并移动到下一个屏幕而不移动或触摸我的屏幕。由于手势识别器具有不同的状态:

UIGestureRecognizerStateBeganUIGestureRecognizerStateEnded

我正在使用UIGestureRecognizerStateEnded,这就产生了问题,因为它首先会检查状态是否已经开始并且事件没有在不移动我的手指的情况下触发。 所以我用UIGestureRecognizerStateEnded替换了UIGestureRecognizerStateBeganif (gesture.state == UIGestureRecognizerStateBegan) { // Do your stuff } ,一切正常。 现在你不需要移开手指了。只需触摸按住,一切正常。

numberOfTapsRequired

这是正确的方式,allowableMovement,{{1}}等其他方式用于不同目的。

答案 1 :(得分:2)

您的UILongPressGestureRecognizer已使用最少的配置信息创建。至少应该考虑设置这些属性:

  • minimumPressDuration
  • allowableMovement

在特殊情况下,您还可以设置:

  • numberOfTouchesRequired
  • numberOfTapsRequired

在您的情况下,我认为您要将allowableMovement设置为0,默认值为10(像素)。您可以从我链接的类引用中阅读更多内容。

答案 2 :(得分:0)

添加UILongPressGestureRecognizer时,还需要设置用户希望保留的时间间隔。您可以使用以下代码行执行此操作:

[longPress setMinimumPressDuration:2];