UICollectionView中的按钮不会接收触摸事件

时间:2017-05-31 11:39:51

标签: ios swift uibutton uicollectionview uicollectionviewcell

我一直在寻找一段时间,但似乎无法弄清楚如何阻止集合视图单元格消耗触摸事件。

我需要将触摸事件传递到相应的单元格中,以便可以按下单元格内的按钮。我在想我可能需要弄清楚如何禁用UICollectionView的didSelectCellAtIndexFunction?

我也认为这是一个潜在的解决方案:collectionView.cancelsTouchesInView = false

此链接也可以帮助有人回答我的问题:How to add tap gesture to UICollectionView , while maintaining cell selection?

提前致谢!

编辑:

另外我应该添加:我的按钮被添加到视图中,该视图又被添加到单元格的contentView中。我的代码是以编程方式完成的,因此我根本不使用interface Builder。

2 个答案:

答案 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