iOS:无需移开手指即可长按

时间:2014-04-07 19:34:54

标签: ios uigesturerecognizer

我正在使用UILongPressGestureRecognizer。我想知道是否有人曾经想出一种方法来触发达到minimumPressDuration而不必抬起他们的手指。基本上,我们可以触发手势的结束而不必移除手指吗?我们可以用多少时间过去了吗?

谢谢,

科林

2 个答案:

答案 0 :(得分:6)

这是UIGestureStateBegan的用途:

-(void)handleGesture:(UILongPressGestureRecognizer *)sender
{
    if(sender.state == UIGestureRecognizerStateBegan){
        NSLog(@"minimum duration elapsed");
    }else if(sender.state == UIGestureRecognizerStateEnded){
        NSLog(@"user lifted their finger");
    }
}

答案 1 :(得分:0)

当用户抬起手指时,

.began状态结束,因此接受的答案对于此问题不正确。过了一段时间,我想通了。 在Swift中回答:

var gesture = UILongPressGestureRecognizer(target: self, action: #selector(longPress(_:)))

func handleLongPress(){
         //do something
         gesture.addTarget(self, action: #selector(longPress(_:)))
}

@objc func longPress(_ sender: UILongPressGestureRecognizer) {
         if sender.state == .began {
                handleLongPress()
                gesture.removeTarget(self, action: #selector(longPress(_:)))
      }
}

这会导致手势在收到.began状态后停止跟踪触摸,并在长按

后完成您想做的任何事情后重新启用它

这是一个非常古老的问题,但我希望有人会发现它很有用