【问题标题】:Allow selecting a cell while a UISearchController is active允许在 UISearchController 处于活动状态时选择单元格
【发布时间】:2018-10-02 12:08:03
【问题描述】:

我有一个 UICollectionViewController 和一个 UISearchController 嵌入在父 UINavigationController 的导航栏中。 我使用的单元格是 UICollectionViewCell 的自定义子类,包含一个 UIImageView

但是,在搜索时,我无法选择通过搜索找到的单元格。当搜索控制器未激活时,选择/点击单元格可以完美运行,并且我已经尝试过 this 回答但没有成功。

这是我的搜索设置代码:

searchController.searchResultsUpdater = self
searchController.definesPresentationContext = true
searchController.searchBar.keyboardAppearance = .default
searchController.obscuresBackgroundDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false

navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false

如果能帮我解决这个问题,我将不胜感激 :)

【问题讨论】:

    标签: ios swift uicollectionview uikit


    【解决方案1】:

    UICollectionView 玩了一会儿后想通了。

    我正在覆盖touchesBegan,如下所示:

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        guard !searchController.isActive else { return }
        super.touchesBegan(touches, with: event)
        UIView.animate(withDuration: 0.1) { () -> Void in
            let shrinkTransform = CGAffineTransform.init(scaleX: 0.9, y: 0.9)
            self.transform = shrinkTransform
        }
    }
    

    问题是我在调用 super.touchesBegan 之前检查搜索控制器是否处于活动状态,只要搜索控制器处于活动状态,它就会阻止触摸。

    将保护语句直接移动到 super.touchesBegan 调用下面解决了我的问题。

    希望这对碰巧遇到类似问题的其他人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 2016-11-07
      相关资源
      最近更新 更多