正如标题所述,我想在点击搜索栏外部时隐藏键盘。类似的问题建议在touchesBegan中使用self.view.endEditing(true),但是我没有成功。我不确定是否有其他设置需要注意,或者我是否正确设置了搜索栏。
import UIKit
import MapKit
class AddressVC: UIViewController {
@IBOutlet weak var searchBar: UISearchBar!
var searchCompleter = MKLocalSearchCompleter()
var searchResults = [MKLocalSearchCompletion]()
@IBOutlet weak var searchResultsTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
// Do any additional setup after loading the view, typically from a nib.
searchResultsTableView.isHidden = true
searchCompleter.delegate = self
}
extension AddressVC: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchCompleter.queryFragment = searchText
}
func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
self.searchBar.endEditing(true)
searchBar.resignFirstResponder()
return true
}
func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
searchResultsTableView.isHidden = false
return true
}
func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.view.endEditing(true)
self.searchBar.endEditing(true)
searchBar.resignFirstResponder()
}
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
searchResultsTableView.isHidden = true
self.searchBar.endEditing(true)
searchBar.resignFirstResponder()
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
}
}