覆盖 UICollectionView 的 UIPanGestureRecognizer

Posted

技术标签:

【中文标题】覆盖 UICollectionView 的 UIPanGestureRecognizer【英文标题】:Overriding UIPanGestureRecognizer for UICollectionView 【发布时间】:2016-03-26 08:08:55 【问题描述】:

在覆盖其超类时遇到一些问题 - 不断收到错误消息“方法不会覆盖其超类中的任何方法”。集合视图和平移都设置好了,我只想禁用横向平移(如果这是一个词)。

我把这个放在班级的底部:

    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】:

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

假设您已在情节提要中或以编程方式创建了一个UIPanGestureRecognizer,您需要在视图加载时将该UIPanGestureRecognizer 的委托设置为self

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

panGesture.delegate = self
collectionView.addGestureRecognizer(panGesture)

【讨论】:

我已经完成了你建议的所有事情,除了删除“覆盖”。我担心没有它就不会调用它,但你是对的,J 先生......你已经解决了我的问题。非常感谢。

以上是关于覆盖 UICollectionView 的 UIPanGestureRecognizer的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖 UICollectionView 中的 handlePan 选择器

将静态 UIButton 覆盖到 UICollectionView

当 UICollectionView 更改布局时覆盖 UIAccessibilityLayoutChangedNotification

UICollectionView targetContentOffsetForProposedContentOffset:被 UIScrollView 覆盖

STM32+ENC28J60+UIP协议栈实现WEB服务器示例

STM32+ENC28J60+UIP协议栈实现WEB服务器示例