键盘没有被解雇

时间:2018-05-23 05:46:16

标签: swift uicollectionview uitextfield swift4

我意识到这是一个微不足道的问题。我可能只需要一双新鲜的眼睛,因为我已经检查了所有的东西,看不出我在哪里出错了。我只想在点击返回键时关闭键盘。我正确地设置了委托并实施了正确的方法,那么为什么键盘不能解雇呢?

collectionView中的viewController会让事情变得复杂吗? (文本字段不在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
}

我尝试的事情:

  • 清理项目
  • 重新启动xcode
  • searchBar.resignFirstResponder()更改为textField.resignFirstResponder()
  • 在IB内设置文本字段的代理,而不是viewDidLoad

我在这里错过了什么!?

2 个答案:

答案 0 :(得分:2)

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

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

_带来了巨大的变化。您可能已经复制了旧的Swift 2实现。

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

答案 1 :(得分:-1)

使用此代码

view.endEditing(true)