我一直在寻找一段时间,但似乎无法弄清楚如何阻止集合视图单元格消耗触摸事件。
我需要将触摸事件传递到相应的单元格中,以便可以按下单元格内的按钮。我在想我可能需要弄清楚如何禁用UICollectionView的didSelectCellAtIndexFunction?
我也认为这是一个潜在的解决方案:collectionView.cancelsTouchesInView = false
此链接也可以帮助有人回答我的问题:How to add tap gesture to UICollectionView , while maintaining cell selection?
提前致谢!
编辑:
另外我应该添加:我的按钮被添加到视图中,该视图又被添加到单元格的contentView中。我的代码是以编程方式完成的,因此我根本不使用interface Builder。
答案 0 :(得分:1)
func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
return false // all cell items you do not want to be selectable
}
假设所有按钮都连接到同一个选择器,您需要一种方法来区分单击了哪个单元格的按钮。找出按钮单元格索引的方法之一是:
func buttonPressed(button: UIButton) {
let touchPoint = collectionView.convertPoint(.zero, fromView: button)
if let indexPath = collectionView.indexPathForItemAtPoint(touchPoint) {
// now you know indexPath. You can get data or cell from here.
}
}
答案 1 :(得分:0)
试一下您的手机。
self.contentView.isUserInteractionEnabled = false