覆盖 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 覆盖