我知道这是一个琐碎的问题,有很多答案。我可能需要一双新的眼睛,因为我已经检查了三遍所有的东西,看不出我做错了什么。我只想在按下回车键时关闭键盘。我正在正确地设置委托并实现正确的方法,那么为什么键盘不关闭呢?
在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内的文本字段而不是in
viewDidLoad
设置委托我在这里到底错过了什么!?
最佳答案
您需要实现适当的文本字段委托方法。没有像textFieldShouldReturn(textField:)
这样的委托方法。正确的方法是textFieldShouldReturn(_:)
。
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
searchBar.resignFirstResponder()
return false
}
_
有很大的不同。您可能复制了旧的Swift 2实现。最好让Xcode执行代码完成,以确保您获得正在实现或调用的任何方法的正确签名。
关于swift - 键盘未关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50480647/