iOSアプリでUITextFieldで入力フィールドを実装した際に、入力用キーボードが表示されたままの状態の際に取れる対処方法です。
1. キーボード入力の決定
入力用キーボードの右下部分を決定表記にする
以下のようにUITextFieldの「Return Key」を「Done」に設定する
UITextFieldDelegateをViewControllerに実装
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
ポイントは下記2点。
- UITextFieldDelegateの実装箇所を
UITextField.delegateに設定する -
textFieldShouldReturn(_:)メソッドでUITextField.resignFirstResponder()を呼び出す
上記を実装することで、キーボード入力の決定ボタンで、入力用キーボードを非表示にできます。
2. UITextField以外の部分をタッチ
もう一つがUITextField以外の部分をタッチした場合に非表示にする方法です。
ViewControllerの touchesBegan(_:with:) メソッドをオーバライドして以下の内容を実装することで対応できます。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if self.textField.isFirstResponder {
self.textField.resignFirstResponder()
}
}
