当 gestureRecognizerShouldBegin 触发时,numberOfTouches 为零

When gestureRecognizerShouldBegin fires the numberOfTouches is zero

我有 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.

问题是 UICollectionViewUIPanGestureRecognizer 可能 return zerogestureRecognizerShouldBegin 触发时接触。所以,如果有人想按照我上面描述的方式控制 UICollectionView 滚动允许的触摸次数,他应该意识到这个问题......或者选择其他方法。

它的正确工作方式(几乎):

override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
    switch gestureRecognizer == self.panGestureRecognizer {
    case true:
        return gestureRecognizer.numberOfTouches <= 1
    default:
        return super.gestureRecognizerShouldBegin(gestureRecognizer)
    }
}