iOS:检测长按而不移除手指

iOS:检测长按而不移除手指,ios,uigesturerecognizer,Ios,Uigesturerecognizer,我正在使用UILongPress手势识别器。我想知道是否有人想出了一种方法,在达到minimumPressDuration时不必抬起手指就能触发。基本上,我们能在不移动手指的情况下触发手势的结束吗?我们能用过去的时间吗 谢谢 柯林这就是UIgestureStateStart的目的: -(void)handleGesture:(UILongPressGestureRecognizer *)sender { if(sender.state == UIGestureRecognizerStat

我正在使用UILongPress手势识别器。我想知道是否有人想出了一种方法,在达到minimumPressDuration时不必抬起手指就能触发。基本上,我们能在不移动手指的情况下触发手势的结束吗?我们能用过去的时间吗

谢谢


柯林这就是UIgestureStateStart的目的:

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

.begined
当用户抬起手指时,状态结束,因此接受的答案对于此问题不正确。过了一段时间,我明白了。 迅速回答:

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(_:)))
      }
}
这将导致手势在接收到
.start
状态后停止跟踪触摸,并在长按后完成所需操作后重新启用


这是一个很老的问题,但我希望有人会觉得它有用

我不认为你可以,但是做一个自定义手势很容易,如果你需要帮助,我可以发布一个答案,说明如何使用it@danhUIGestureRecognitizerStateRecognited在值上等同于UIGestureRecognitizerStateEnded,并且仅当用户抬起手指时才会触发Yes,的确我将删除我的评论,很抱歉添加了混淆。太棒了!通过阅读文档,我认为开始状态是用户第一次点击屏幕时的状态。谢谢