使用滑动手势和触摸同时开始/移动/结束

Posted

技术标签:

【中文标题】使用滑动手势和触摸同时开始/移动/结束【英文标题】:Using Swipe Gesture and Touches Began/Moved/Ended at the same time 【发布时间】:2014-11-15 20:27:12 【问题描述】:

我正在尝试使用滑动手势以及触摸开始/移动/结束中的一些逻辑。理想情况下,如果:

用户向左/向右滑动,触摸开始/移动/结束逻辑未被调用(或取消)。 对于所有其他情况,触摸开始/移动/结束逻辑照常调用。

这可能吗?

我尝试添加以下内容(基于 process both touch event and gesture recognizer),但仍然调用 touchesmoved/ended:

leftSwipeGestureRecognizer.delaysTouchesBegan = true 
self.leftSwipeGestureRecognizer.cancelsTouchesInView = false

【问题讨论】:

我认为self.leftSwipeGestureRecognizer.cancelsTouchesInView应该设置为YES @orkenstein 将其发布为答案伙伴。 +1 @AMI289,为什么不呢?谢谢,伙计。 @HHHH 只是一个注释-您提供的链接,您关注的,是为了做与您要求的相反的事情。发帖人问他如何使用手势识别器,并且仍然同时调用所有触摸事件方法。 @AMI289 啊谢谢,完全看错了! 【参考方案1】:

应该是:

self.leftSwipeGestureRecognizer.cancelsTouchesInView = YES

这意味着:如果手势被识别,触摸将被取消,否则,触摸开始/移动/结束调用。

来自文档:

当此属性为 YES(默认值)并且接收器识别 它的手势,该手势的未决触摸不是 传递到视图和先前传递的触摸被取消 通过一个 touchesCancelled:withEvent: 消息发送到视图。如果一个 手势识别器无法识别其手势,或者如果 此属性为 NO,视图接收多点触控中的所有触控 顺序。

【讨论】:

【参考方案2】:

在这种情况下,我将创建一个自定义 UIGestureRecognizer,用于在开始/移动/结束时触摸的新行为。有用的链接here。比我为滑动和客户识别器设置delegate 并实现gestureRecognizer:shouldRequireFailureOfGestureRecognizer: 方法来满足要求。 Link to documentation.

【讨论】:

对于这种情况,我不需要使用它,但知道这一点很有趣 - 谢谢!

以上是关于使用滑动手势和触摸同时开始/移动/结束的主要内容,如果未能解决你的问题,请参考以下文章

如何将移动手势(例如触摸和滑动)添加到 React Bootstrap 轮播组件?

UISwipeGestureRecognizer 滑动长度

使 UIControl 仅接受滑动手势并传递触摸/点击手势

在滑动手势识别器上禁用“在突出显示时显示触摸”

iOS UICollectionView左右滚动和上下滑动处理

六libinput功能介绍(三手势)