为 UICollectionView 覆盖 UIPanGestureRecognizer

Overriding UIPanGestureRecognizer for UICollectionView

在覆盖它的 superclass 时遇到一些问题 - 不断收到错误 "method does not override any method from its superclass"。集合视图和平移都已设置,我只想禁用横向平移(如果这是一个词)。

我把这个贴在 class 的底部:

    override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
    if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer {
        let translation = panGestureRecognizer.translationInView(collectionView!)
        if fabs(translation.y) > fabs(translation.x) {
            return true
        }
        return false
    }
    return false
}

有什么想法吗?我将 post 我的 jazzy collectionview 和它的平移能力作为对那些做出贡献的人的奖励。

您不能覆盖该方法,因为它不是您的 superclass (UICollectionView) 的一部分。您需要在 class 中采用 UIGestureRecognizerDelegate 协议并删除 override.

假设您已经创建了一个 UIPanGestureRecognizer,无论是在故事板中还是以编程方式,您都需要在加载视图时将 UIPanGestureRecognizer 的委托设置为 self

此外,不要忘记将 panRecognizer 添加到您的集合视图中。

panGesture.delegate = self
collectionView.addGestureRecognizer(panGesture)