向UICollectionView
添加单击手势,不要妨碍单元格选择。
我想在collectionView的no-cell部分进行一些其他的点击。
使用XCode8,Swift 3。
override func viewDidLoad() {
...
collectionView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(tap)))
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath)
}
func tap(sender: UITapGestureRecognizer){
print("tapped")
}
是的,它现在阻碍了它。当您点击单元格时,它会记录"点击"。
无法找到更多痕迹。关于如何实施细胞选择或实现这项任务的任何想法?
答案 0 :(得分:28)
每当您想要添加手势识别器,但不想从目标视图中窃取触摸时,您应该将gestureRecognizer
实例的UIGestureRecognizer.cancelsTouchesInView
设置为false。
答案 1 :(得分:9)
您可以通过这种方式获取indexPath和/或单元格,而不是尝试强制didSelectItem
:
func tap(sender: UITapGestureRecognizer){
if let indexPath = self.collectionView?.indexPathForItem(at: sender.location(in: self.collectionView)) {
let cell = self.collectionView?.cellForItem(at: indexPath)
print("you can do something with the cell or index path here")
} else {
print("collection view was tapped")
}
}