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 只触发一次的主要内容,如果未能解决你的问题,请参考以下文章