为什么我的 UICollectionView 单元格在我的 swift ios 应用程序中不可点击?

Why is my UICollectionView cell not clickable in my swift ios app?

我在 swift class 中使用 UICollectionView,它放在我的 UIViewController 上。我在我的代码中将 collectionView 连接到插座,我设置了 delegatedatasource,然后我在我的应用程序中看到了结果。一切正常,除了当我单击每个单元格时 - 没有任何反应。

我的代码如下:

class UsersList: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {


@IBOutlet weak var tview: UICollectionView!

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    tview.backgroundColor = UIColor.whiteColor() //this works
    tview.delegate = self
    tview.dataSource = self
}

func collectionView(tview: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    print("You selected cell #\(indexPath.item)!")
    //this does not appear in the console :(
}

我还能做些什么来在控制台中看到打印消息吗?

确保在故事板中启用了用户交互

在swift中,参数名和函数名共同标识一个函数。 UICollectionViewDelegate 有功能

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)

但不是

func collectionView(tview: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)

尝试从视图中删除所有 UIGesture,然后测试 UICollectionView Cells 是否能够正常交互。

就我而言,我必须删除以下行:

let tap = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
    self.view.addGestureRecognizer(tap)

出于某种原因,这妨碍了我点击单元格。

我不得不将情节提要中的滚动方向从垂直更改为水平,这对我很有效。

对我来说,我必须设置 UICollectionView 的委托。例如,在 viewDidLoad():

collectionView.delegate = self

这是必要的,否则将不会调用委托方法!

我的问题是 isUserInteractionEnabled 对于 collectionView 的父视图是错误的。我从其他地方获取了父视图的代码,显然这是正确的做法。但不是在这里...叹气...