当gestureRecognizerShouldBegin触发numberOfTouches为零时

时间:2017-04-12 13:50:36

标签: ios swift uicollectionview uigesturerecognizer uipangesturerecognizer

我有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 个答案:

答案 0 :(得分:0)

问题是当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)
    }
}