在 swift 3 的 tableView 上按搜索键时如何关闭键盘?

How to dismiss keyboard when pressing Search key on tableView in swift 3?

如何在按下搜索键时关闭键盘?我在 tableView 上有一个搜索栏,我使用了以下方法。它没有用。知道为什么吗?提前致谢。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true

}

更新 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)

}

确保在 viewDidLoad() 中执行 self.textField.delegate = self,当然您的 viewController 必须符合 UITextFieldDelegate 协议。然后,确保您正确拼写函数 textFieldShouldReturn()

如果您使用的是 UISearchBar,那么首先要确保其委托已设置 然后添加这个函数

func searchBarSearchButtonClicked(_ searchBar: UISearchBar)  {
    searchBar.resignFirstResponder()
}

以下对我有用。

'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

   ...

}

...