我意识到这是一个微不足道的问题。我可能只需要一双新鲜的眼睛,因为我已经检查了所有的东西,看不出我在哪里出错了。我只想在点击返回键时关闭键盘。我正确地设置了委托并实施了正确的方法,那么为什么键盘不能解雇呢?
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
}
我尝试的事情:
searchBar.resignFirstResponder()
更改为textField.resignFirstResponder()
viewDidLoad
我在这里错过了什么!?
答案 0 :(得分:2)
您需要实现正确的文本字段委托方法。没有textFieldShouldReturn(textField:)
这样的委托方法。正确的方法是textFieldShouldReturn(_:)
。
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
searchBar.resignFirstResponder()
return false
}
_
带来了巨大的变化。您可能已经复制了旧的Swift 2实现。
最好让Xcode执行代码完成,以确保您获得正在执行或调用的任何方法的正确签名。
答案 1 :(得分:-1)
使用此代码
view.endEditing(true)