【Swift】【XCode】UITextFieldのキーボードの扱い
目次
UITextFIedlを使用したときのキーボードの扱い
returnキーでキーボードをしまう
- UITextFieldDelegateを実装し、- returnキーを押したイベントを取得します。
- UITextFieldの- resignFirstResponder関数を使うことで、ファーストレスポンダをやめます。- UITextFieldは、ファーストレスポンダになるとキーボードを表示し、やめると、キーボードを非表示にする性質を持っています。
 
- textFieldShouldReturn関数は- trueを返すことで、- returnキーを押したイベントを発行し処理を実行します。
| 1 |  | 
キーボードの外をタップして、キーボードをしまう
- UIViewControllerに用意されている、- touchesBeganメソッドをオーバーライドすることで、Viewのタップイベントを取得できる
- UIViewクラスの- endEditing関数に対して、- trueを設定することで、強制的に現在のファーストレスポンダをやめさせます。- endEditing関数だけ、UITextFieldクラスと同じファイルに記述してあった。- 1 
 2
 3
 4- extension UIView {
 open func endEditing(_ force: Bool) -> Bool // use to make the view or any subview that is the first responder resign (optionally force)
 }- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12- class ViewController: UIViewController{
 @IBOutlet weak var testTextField: UITextField!
 override func viewDidLoad() {
 super.viewDidLoad()
 }
 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
 view.endEditing(true)
 }
 }
 
view.endEditing(true)とtextField.resignFirstResponder()の違い
view.endEditing(true)を使えば、reutrnキーでキーボードをしまうの処理もできてしまいます。では、2つのキーボードのしまい方の違いは何なのでしょうか。
- view.endEditing(true) : 現在の画面内で現在のファーストレスポンダをやめさせます。結果として、 - UITextFiledの- resignFirstResponder関数を呼んでいます。
- textField.resignFirstResponder : returnキーを押したイベントが発火したことで、引数の - UITextFieldが- ファーストレスポンダだとわかっているので、引数の- resignFirstResponder関数を呼ぶことで、- ファーストレスポンダをやめさせています。
結果として、どちらもresignFirstResponder関数を呼んでいることになります。
【Swift】【XCode】UITextFieldのキーボードの扱い
https://daiki-iijima.github.io/2021/07/16/【Swift】【XCode】UITextFieldのキーボードの扱い/




