将平移手势添加到 UICollectionView 单元 - IOS/Swift

Posted

技术标签:

【中文标题】将平移手势添加到 UICollectionView 单元 - IOS/Swift【英文标题】:Add Pan Gesture to UICollectionView Cell - IOS/Swift 【发布时间】:2016-08-11 17:04:38 【问题描述】:

我有一个 UICollectionView,我想向它的单元格/项目添加平移手势。当我以通常的方式添加手势时,UICollectionView 没有滚动。

这就是我添加手势的方式

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 

    let cell:UICollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath)

    let panGesture = UIPanGestureRecognizer(target: self, action: #selector(CaptureViewController.pagesCollectionViewItemPanEvent(_:)))
    cell.addGestureRecognizer(panGesture)

    return cell;

这里有什么问题吗?有人可以告诉我完成工作的方法吗?任何帮助将不胜感激。

【问题讨论】:

查看这个答案,希望对您有所帮助:) Swift gesture 尝试扩展您的集合视图对象,从那里实现 touchesbegan 触摸事件方法。然后处理你的pan事件,然后实现[super touchevents]方法,这样现有的collectionview滚动就不会影响了。 【参考方案1】:

您应该将手势添加到集合视图而不是单元格本身。 比如……

let panGesture = UIPanGestureRecognizer(target: self, action: "handlePanGesture:")
collectionView.addGestureRecognizer(panGesture)

func handlePanGesture(gesture: UIPanGestureRecognizer) 

    let locationInView = gesture.locationInView(collectionView)
    ...

【讨论】:

【参考方案2】:

只是一个建议,我没有测试:

创建自定义单元格:

class PanCell: UICollectionViewCell 
    override func awakeFromNib() 
        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(self.pagesCollectionViewItemPanEvent(_:)))
        self.addGestureRecognizer(panGesture)
    

您可以使用委托通知CaptureViewController

【讨论】:

为单元创建自定义类将解决我的问题??对不起,我不明白这个。你能解释一下吗:) 创建一个自定义单元格,您可以管理单元格内的手势,我不知道是否能解决您的问题,但我可以帮助您分离类行为,这是一个很好的起点解决您的问题。 别担心,如果我的想法能帮助你标记我的问题,我将不胜感激,否则会尽力帮助你:) 好的,当然 ????

以上是关于将平移手势添加到 UICollectionView 单元 - IOS/Swift的主要内容,如果未能解决你的问题,请参考以下文章

禁用 uicollectionview 水平滚动的外部平移手势

如何使集合视图响应其自身视图之外的平移手势

UICollectionView:将单击手势识别器添加到补充视图

具有自定义流布局的 UICollectionView - 在具有活动平移手势的情况下滚动时单元格出现故障

UIScrollview 子视图在缩放后无法识别平移手势

设置平移手势的界限