当gestureRecognizerShouldBegin 触发时numberOfTouches 为零
Posted
技术标签:
【中文标题】当gestureRecognizerShouldBegin 触发时numberOfTouches 为零【英文标题】:When gestureRecognizerShouldBegin fires the numberOfTouches is zero 【发布时间】:2017-04-12 13:50:35 【问题描述】:我有UICollectionView
并决定覆盖gestureRecognizerShouldBegin
函数,以便能够控制集合滚动中涉及的触摸次数。
所以我希望我的UICollectionView
只用一根手指滚动。
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool
switch gestureRecognizer == self.panGestureRecognizer
case true:
return gestureRecognizer.numberOfTouches == 1
default:
return super.gestureRecognizerShouldBegin(gestureRecognizer)
它在我的 ios 10.3.1 设备上按预期工作。但它不适用于 iOS 10.0.1、iOS 9.3.5。
【问题讨论】:
【参考方案1】:问题是UICollectionView
的UIPanGestureRecognizer
可能会在gestureRecognizerShouldBegin
触发时返回零 次触摸。所以,如果有人想控制UICollectionView
允许的触摸次数,我上面描述的滚动方式,他应该意识到这个问题......或者选择其他方法。
它正常工作的方式(几乎):
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool
switch gestureRecognizer == self.panGestureRecognizer
case true:
return gestureRecognizer.numberOfTouches <= 1
default:
return super.gestureRecognizerShouldBegin(gestureRecognizer)
【讨论】:
以上是关于当gestureRecognizerShouldBegin 触发时numberOfTouches 为零的主要内容,如果未能解决你的问题,请参考以下文章