ios - didSelectItemAt 未被调用

标签 ios swift uicollectionview

我的 Collection View 已准备就绪,我正在尝试执行 didSelectItemAt 以转到详细 View 。但我只想测试记录每个项目,但它没有记录。

我已经设置了所有代表:

*

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UISearchBarDelegate {*

    @IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
    @IBOutlet weak var searchBar: UISearchBar!
    @IBOutlet weak var collection: UICollectionView!

    override func viewDidLoad() {
        super.viewDidLoad()
        collection.dataSource = self
        collection.delegate = self
        searchBar.delegate = self

        activityIndicatorView.isHidden = true


        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
        view.addGestureRecognizer(tap)
    }

*

我做错了什么?

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let movie : Movie

    movie = MOVIE_ARRAY[indexPath.row]
    print(movie.plot)
}

enter image description here

最佳答案

您已经在 View 上添加了一个 TapGestureRecognizer。 TapGestureRecognizer 有一个属性 cancelsTouchesInView

- var cancelsTouchesInView: Bool { get set }

A Boolean value affecting whether touches are delivered to a view when a gesture is recognized.

默认情况下为 true 并且将阻止调用 didSelectItemAt,因为在识别点击后触摸不会传递到 View 。 您需要像这样将其设置为 false:

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)

关于ios - didSelectItemAt 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39780373/

相关文章:

ios - 在没有 Game Center 的 iOS 应用程序中实现成就

ios - Swift - 如何用单元格填充 Collection View

ios - CollectionView 中用于评论和回复的多个单元格

ios - 将 Collection View 单元格的 subview 发送到后面会阻止它更改 backgroundColor

ios - swift 编译器总是 100% CPU

ios - watchos2 - 我可以实现多个 Storyboard吗?

ios - 删除所有语言后如何修复 xcode 5 的本地化

xcode - 背景音乐不起作用,但没有错误?

ios - 执行自定义 segue 时调用不平衡

ios - Xcode忘记密码解析