仅在长按识别器触发后执行平移手势识别器

Posted

技术标签:

【中文标题】仅在长按识别器触发后执行平移手势识别器【英文标题】:Executing pan gesture recognizer ONLY after long press recognizer has fired 【发布时间】:2017-09-13 01:17:13 【问题描述】:

我正在尝试使用平移手势识别器为我的 UIView 实现拖放 UI。我有那段代码工作,但现在我只想在用户长时间按下我的待拖动视图后才执行拖放逻辑。

我正在实现以下问题中的代码 Recognize long press and pan gesture recognizers together 但这并不是我想要的。有什么想法吗?

【问题讨论】:

【参考方案1】:

将您的视图控制器设置为平移手势识别器的代理。

实现gestureRecognizerShouldBegin(_:) 方法。在长按手势识别器触发之前返回 false。

【讨论】:

我是否只是在我的 VC 中的某处保留一个标志以查看长按手势是否已开始?还是有更好的方法? 一个标志似乎是一种合理的方式。【参考方案2】:

发现另一个帖子的标题有点误导,所以我第一次没有仔细研究它。 Combine longpress gesture and drag gesture together

原来,UILongPressGesture 已经可以帮我实现我想要的拖放效果了。这意味着我根本不需要UIPanGesture。我只是将选择器/处理程序用于长按手势的平移手势。除了长按手势没有translation属性,所以我用

myView.center = sender.location(in: myView.superview)

达到同样的拖拽效果。

【讨论】:

以上是关于仅在长按识别器触发后执行平移手势识别器的主要内容,如果未能解决你的问题,请参考以下文章

UIAlertView 警报在长按手势识别器中重复三次

UIAlertView 警报在长按手势识别器中重复三次

使平移手势识别器仅在向下滑动并在 tableview 顶部时响应

为啥我的平移手势只能在第二次输入后识别事件?

长按手势识别器触发两次[重复]

使平移手势识别器仅在向下滑动时在桌面视图的顶部进行响应