【问题标题】:When gestureRecognizerShouldBegin fires the numberOfTouches is zero当gestureRecognizerShouldBegin 触发时numberOfTouches 为零
【发布时间】: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。

【问题讨论】:

    标签: ios swift uicollectionview uigesturerecognizer uipangesturerecognizer


    【解决方案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)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多