我想将一个doubleTap手势或其他一些功能添加到集合视图中,该集合视图将下载附加到所选单元格的文件。
我有一个双击手势识别器工作,当您在集合视图内双击时,它将打印该点。但是,只要我尝试双击一个单元格,内置手势识别器就会生效,并且运行了选择项运行。
有没有办法在不触发didSelectItemAt中的代码的情况下添加双击?或者在没有向viewController添加按钮的情况下实现此功能的其他方法的任何想法?
这是我在具有集合视图的viewcontroller的viewDidLoad中使用的手势代码:
let doubleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didDoubleTap))
doubleTap.numberOfTapsRequired = 2
self.collectionView.addGestureRecognizer(doubleTap)
我的doubleTap功能:
func didDoubleTap(gesture: UITapGestureRecognizer) {
let point: CGPoint = gesture.location(in: self.collectionView)
print(point)
if let selectedIndexPath: IndexPath = self.collectionView.indexPathForItem(at: point) {
let selectedCell: UICollectionViewCell = self.collectionView.cellForItem(at: selectedIndexPath as IndexPath)!
print("cell \(selectedCell) was double tapped")
}
}
作为一个注释,我已经尝试将其添加到单元格本身,但我无法使其正常工作。单元格是一个自定义的UICollectionViewCell,并且没有viewDidLoad函数,因此要创建手势,我必须创建一个委托,该委托调用代码来设置来自viewController的手势,该viewController保存集合视图,我只是得到错误。 / p>
答案 0 :(得分:1)
您可以在手势识别器上尝试delaysTouchesBegan = true
。这应该会延迟导致didSelect
的触摸处理并从手势识别器
答案 1 :(得分:0)
您应该将点击手势识别器添加到cellForRowAtIndexpath
数据源方法中的每个单元格。