uilongpressgesturerecognizer 只触发一次

Posted

技术标签:

【中文标题】uilongpressgesturerecognizer 只触发一次【英文标题】:uilongpressgesturerecognizer fire only once 【发布时间】:2016-06-14 13:01:43 【问题描述】:

我想添加一个手势,该手势仅在有人按下一秒钟左右时才会触发。不是轻按,而是长按。如果我使用 uilongpressgesturerecognizer 它会一直触发直到我松开手指。我该如何解决这个问题。

【问题讨论】:

您使用哪种手势状态来查看此内容?如果你打开gestureRecognizer.state并且只寻找.Ended状态,那么每次长按只会出现一次(在长按结束时)。 【参考方案1】:

在创建和添加手势时设置minimumPressDuration,如下所示:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                                      initWithTarget:self action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 1.0;

UIGestureRecognizerStateEnded 状态下编写您的代码,如下所示:

-(void)handleLongPress:(UILongPressGestureRecognizer *)Gesture

    if (Gesture.state == UIGestureRecognizerStateEnded) 


       //Do any thing after long press ended,which will be 1.0 second as set above


    
    else if (Gesture.state == UIGestureRecognizerStateBegan)



    

【讨论】:

【参考方案2】:

斯威夫特 5

声明UILongPressGestureRecognizer

let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(gestureAction(gesture:)))

将其.minimumPressDuration 设置为1.0 或您想要的任何间隔。

将识别器 .delegate 设置为您的 ViewController 并使用 .addGestureRecognizer() 将其添加到您的视图中。

使用以下函数来处理手势:

@objc func gestureAction(gesture: UIGestureRecognizer) 
    if let longPress = gesture as? UILongPressGestureRecognizer 
        if longPress.state == UIGestureRecognizer.State.began 

         else 

        
    

【讨论】:

【参考方案3】:

设置minimumPressDuration属性的值UILongPressGestureRecognizer

【讨论】:

以上是关于uilongpressgesturerecognizer 只触发一次的主要内容,如果未能解决你的问题,请参考以下文章