我知道这是一个琐碎的问题,有很多答案。我可能需要一双新的眼睛,因为我已经检查了三遍所有的东西,看不出我做错了什么。我只想在按下回车键时关闭键盘。我正在正确地设置委托并实现正确的方法,那么为什么键盘不关闭呢?
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内的文本字段而不是inviewDidLoad设置委托
我在这里到底错过了什么!?

最佳答案

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

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

_有很大的不同。您可能复制了旧的Swift 2实现。
最好让Xcode执行代码完成,以确保您获得正在实现或调用的任何方法的正确签名。

关于swift - 键盘未关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50480647/

10-12 00:15
查看更多