如何在按搜索键时关闭键盘?我在tableView上有一个搜索栏,我使用了以下方法。它没有起作用。知道为什么吗?提前谢谢。
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
更新2.0 2.0
这张图片是我正在尝试做的,当我点击搜索键时,什么也没有发生。enter image description here
我已经设置了我的UISearchBar委托
class SearchVC: UIViewController, UITableViewDataSource, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var data = [// my data here.]
var filteredData: [String]!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
searchBar.delegate = self
filteredData = data
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
tableView.addGestureRecognizer(tap)
}
发布于 2017-02-21 13:58:01
如果您使用的是UISearchBar,那么首先确保设置了它的委托,然后添加此函数
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
}
发布于 2017-07-20 16:25:42
下面的方法对我很有效。
'searchActive‘用于在过滤值和原始未过滤值之间切换。
“initialUseOfSearchBar”用于在第一次显示键盘,但之后当用户按下清除的“x”时,键盘被隐藏。
var initialUseOfSearchBar = true
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
searchActive = true
if searchBar.text?.characters.count == 0 {
searchActive = false
if initialUseOfSearchBar == false {
searchBar.resignFirstResponder()
}
}
}
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
searchActive = false
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searchActive = false
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchActive = false
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchText.characters.count == 0 {
searchActive = false;
tableView.reloadData()
searchBar.resignFirstResponder()
}
initialUseOfSearchBar = false
...
}
..。
发布于 2017-02-21 13:57:03
确保在viewDidLoad()
中使用self.textField.delegate = self
,当然,您的viewController
必须符合UITextFieldDelegate
协议。然后,确保您正确地拼写函数textFieldShouldReturn()
https://stackoverflow.com/questions/42359591
复制相似问题