我有一个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
在解决此问题方面,我将不胜感激
答案 0 :(得分:0)
在和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
调用的正下方,解决了我的问题。
希望这可以帮助碰巧遇到类似问题的其他任何人!