使用滑动手势和触摸同时开始/移动/结束
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 轮播组件?