为UICollectionView重写UIPanGestureRecognizer

时间:2016-03-26 08:08:56

标签: ios swift uicollectionview uicollectionviewcell uipangesturerecognizer

有一些问题让它覆盖它的超类 - 继续得到错误"方法不会覆盖其超类的任何方法"。集合视图和平移器都已设置好,我只想禁用侧向平移(如果这是一个单词)。

我坚持在课堂的最底层:

    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
}

有什么想法吗?我会发布我的jazzy collectionview及其平移功能,作为那些贡献者的奖励。

1 个答案:

答案 0 :(得分:1)

您无法覆盖该方法,因为它不属于您的超类(UICollectionView)。您需要在班级中采用UIGestureRecognizerDelegate协议,然后移除override

假设您已经在故事板或编程方式中创建了UIPanGestureRecognizer,那么只要您的视图加载,就需要将UIPanGestureRecognizer的代理设置为self

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

panGesture.delegate = self
collectionView.addGestureRecognizer(panGesture)