[英]How to dismiss keyboard when pressing Search key on tableView in swift 3?
How to dismiss keyboard when pressing Search key? 按搜索键时如何关闭键盘? I have a search bar on tableView and I used the following method.
我在tableView上有一个搜索栏,我使用了以下方法。 It did't work.
它没用。 Any Idea why?
任何想法为什么? Thanks in advance.
提前致谢。
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
UPDATE 2.0 ---------------------------------------------------- 更新2.0 ------------------------------------------------ ----
This picture is what I am trying to do, when I click search key nothing happened. 这张照片是我想要做的,当我点击搜索键时什么也没发生。 enter image description here
在此输入图像描述
I have my UISearchBar delegate has set already 我已经设置了我的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)
}
If you are using UISearchBar then first make sure its delegate is set and then add this function 如果您正在使用UISearchBar,那么首先确保其委托已设置,然后添加此功能
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
}
The following worked for me. 以下对我有用。
'searchActive' is used to switch between the filtered values and the original unfiltered values. 'searchActive'用于在过滤值和原始未过滤值之间切换。
'initialUseOfSearchBar' is used to show the keyboard the first time around but after that keyboard is hidden when user presses clear 'x'. '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
...
}
... ...
make sure in viewDidLoad()
you do self.textField.delegate = self
and of course your viewController
must conform to the UITextFieldDelegate
protocol. 确保在
viewDidLoad()
你做self.textField.delegate = self
,当然你的viewController
必须符合UITextFieldDelegate
协议。 Then, make sure you are spelling the function correctly textFieldShouldReturn()
然后,确保正确拼写函数
textFieldShouldReturn()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.