将平移手势添加到 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:将单击手势识别器添加到补充视图