簡體   English   中英

iOS:無需按住手指即可檢測長按

[英]iOS: Detect long press without removing finger

我正在使用UILongPressGestureRecognizer。 我想知道是否有人想出了一種方法,可以在達到minimumPressDuration時觸發而不用松開手指。 基本上,我們可以觸發手勢的結束而不必移開手指嗎? 我們能用多少時間過去嗎?

謝謝,

科林

那就是UIGestureStateBegan的目的:

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

當用戶抬起手指時, .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狀態后停止跟蹤觸摸,並在長按之后完成您想做的所有操作后重新啟用它

這是一個很老的問題,但我希望有人會覺得有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM