键盘没有被解雇

Keyboard not being dismissed

我意识到这是一个微不足道的问题,在 SO 上有大量的答案。我可能只需要一双新鲜的眼睛,因为我已经对所有内容进行了三次检查,但看不出哪里出了问题。我只想在按下 return 键时关闭键盘。我正确地设置了委托并实现了正确的方法,那么为什么键盘不会消失呢?

viewController 中有 collectionView 会使事情复杂化吗? (文本字段不在 collectionView 内)

class SearchController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UITextFieldDelegate {

@IBOutlet weak var searchBar: UITextField!


override func viewDidLoad() {
    super.viewDidLoad()

    searchBar.delegate = self
    setupUI()

}

func textFieldShouldReturn(textField: UITextField) -> Bool {
    searchBar.resignFirstResponder()
    return true
}

我尝试过的事情:

我到底错过了什么!?

使用此代码

view.endEditing(true) 

您需要实施正确的文本字段委托方法。没有 textFieldShouldReturn(textField:) 这样的委托方法。正确的方法是 textFieldShouldReturn(_:).

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    searchBar.resignFirstResponder()
    return false
}

_ 有很大的不同。您可能复制了旧的 Swift 2 实现。

最好让 Xcode 执行代码完成,以确保您获得正在实施或调用的任何方法的正确签名。