您的问题是您没有委托一个textField以使用该方法。首先,您的类必须包括UITextFieldDelegate
协议:
class yourClass: UIViewController, UITextFieldDelegate { ... }
在 viewDidLoad()
方法中,也要添加这个:
scoreText.delegate = self
然后你必须更改这个:
func textFieldShouldReturn(_ scoreText: UITextField) -> Bool {
self.view.endEditing(true)
return false
}
到这个:
func textFieldShouldReturn(_ scoreText: UITextField) -> Bool {
self.view.endEditing(true)
return true
}
最终代码:
class yourClass: UIViewController, UITextFieldDelegate {
@IBOutlet weak var scoreText: UITextField!
override func viewDidLoad(){
super.viewDidLoad()
scoreText.delegate = self
}
func textFieldShouldReturn(_ scoreText: UITextField) -> Bool {
self.view.endEditing()
return true
}
}
如果这个方法不能正常工作,问题不在于 textFieldShouldReturn()
函数。请检查你的输出口连接是否正确。试试这个
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Here is full code
class ViewController: UIViewController,UITextFieldDelegate {
//Connect to text field
@IBOutlet weak var scoreText: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
//must initialize delegate
scoreText.delegate = self
}
//add method
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}