【发布时间】:2015-12-15 16:09:47
【问题描述】:
虽然我的问题似乎很容易解决,但我不能自己解决。
基本上,我得到了包含我所有数据的 CollectionViewController,并且我在其中包含了一个搜索栏,该搜索栏根据用户所写的内容过滤我的收藏中的项目。
当用户点击任何项目时,它会将他们引导至另一个视图,依此类推。
当用户点击搜索栏时,键盘会显示出来,我想在用户决定点击其他地方时隐藏它。
虽然我可以做到这一点,但事实证明,每次我用我找到的方法隐藏键盘时,它也会阻止用户进一步进入我的应用程序,事实上在点击后不再可能进入另一个视图他们。
这就是我所做的:
我的 CollectionViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
// Setup search bar/collection view
self.collectionView?.dataSource = self
searchBar.delegate = self
searchBar.sizeToFit()
searchBar.placeholder = "Search"
navigationItem.titleView = searchBar
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
searchBar.resignFirstResponder()
}
我也尝试了很多发现here的东西,但都没有成功。不知何故,即使我在我的文件中包含了 UIGestureRecognizerDelegate,当我点击某个地方时,其中列出的一些委托也不会被触发。例如委托gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool 不起作用。
我可以看到这里的逻辑,但是不可能找到任何不破坏集合视图的修复。
感谢您的帮助,谢谢。
【问题讨论】:
-
尝试使用
view.endEditing(true)而不是searchBar.resignFirstResponder()。它可能会起作用。 -
不幸的是,它也是如此。我的视图之间的转换是连续的,当你添加一个手势识别器时它会以某种方式中断吗?
-
亲爱的@CroiSciento 我已经为您的问题发布了解决方案。