gestureRecognizerShouldBegin

gestureRecognizerShouldBegin

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

最佳答案

问题在于,UICollectionView触发时,UIPanGestureRecognizergestureRecognizerShouldBegin可能返回零触摸。因此,如果有人想要控制UICollectionView滚动滚动的次数,我应该意识到问题所在,或者选择其他方法。

正确运行的方式(几乎):

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

08-05 23:14