リターンキーが押されたときにiOSキーボードを非表示にしようとすると、代わりに停止し、画像に表示されるエラーが表示されます。私が使用しているコードは次のとおりです。
@IBOutlet weak var scoreText: UITextField!
func textFieldShouldReturn(_ scoreText: UITextField) -> Bool {
self.view.endEditing(true)
return false
}
問題は、そのメソッドを使用するために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
}
Swift 4または5で、次のように使用できます。
完全なコードはこちら
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
}
}