当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】:

问题是UICollectionViewUIPanGestureRecognizer 可能会在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 为零的主要内容,如果未能解决你的问题,请参考以下文章

python当密码正确输入,当密码错误时

更新:为啥当用户是管理员时关系有效,但当普通用户时不会?

当位于顶级栏目显示下级栏目,当位于二级栏目显示同级栏目,当位于三级目录,显示上级栏目

当应用程序在后台时扫描外围设备(例如,当屏幕锁定时)

psp一骑当千交叉冲击金手指

当组长有感