【问题标题】:didSelectItemAt not being calleddidSelectItemAt 未被调用
【发布时间】:2016-09-29 21:32:51
【问题描述】:

我的收藏视图已准备就绪,我正在尝试使用didSelectItemAt 转到详细视图。但我只想测试记录每个项目并且它没有记录。

我已经设置了所有的代表:

*

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)
}

【问题讨论】:

  • 你设置了集合视图的代理吗?
  • 检查你是否没有使用 didDeselectItemAt indexPath 而不是 didSelectItemAt
  • didSelectItemAt 被使用 :) 谷歌搜索了一个小时,这是最常见的错误。是的,视图的委托都设置好了。

标签: ios swift uicollectionview


【解决方案1】:

您在视图上添加了TapGestureRecognizer。 TapGestureRecognizer 有一个属性cancelsTouchesInView

- var cancelsTouchesInView: Bool { get set }

一个布尔值,影响在识别手势时是否将触摸传递到视图。

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

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

【讨论】:

  • 你成就了我的一天
  • 那些意想不到的手势识别器!
  • 我在另一个文件的函数中添加了点击手势,并在我的视图控制器上将其称为 hideKeyboardWhenTappedAround() ......根据您的建议编辑该函数非常有效......跨度>
  • 我想在点击一个项目时禁用 TapGestureRecognizer 工作(当 didSelectItemAt 触发时)。我尝试了你的解决方案,但它只允许 didSelectItemAt 执行,但在此之后它执行它的方法
  • 看了这个答案然后说“不,不适用”......当然,你猜怎么着......适用!!!
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多