我有一个 UICollectionView
,我可以使用 UISearchBar
搜索它。我将其设置为当用户点击屏幕上的任意位置时,键盘将消失。
在 viewDidLoad()
中:
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.dismissKeyboard))
view.addGestureRecognizer(tap)
然后:
@objc override func dismissKeyboard() {
view.endEditing(true)
searchBar.endEditing(true)
}
它可以关闭键盘,但是这个点击手势识别器妨碍了选择 UICollectionView 单元格。 didSelectItemAt
方法将不起作用。
在这里查看另一个答案,我设法通过删除手势识别器并在 didSelectItemAt
中添加 dismissKeyboard()
来稍微修复它。但是,现在它只会在您点击单元格然后选择该项目时才会消失(我不想要,我只想让键盘消失)。
我如何做到这一点,以便在显示键盘时点击屏幕上的任意位置将其关闭,之后 UICollectionView
单元格可以工作并可以被选中?
谢谢!
最佳答案
您需要在您的 View Controller 中扩展 UIGestureRecognizerDelegate 并添加这段代码。然后点击手势将不适用于 collectionview,并在其余 View 中正常运行。
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view != self.yourCollectionView{
return false
}else{
return true
}
}
关于ios - 点击手势识别器妨碍选择 Collection View 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57776661/