Swift で実装しとくと便利かな?な機能その2。
今回は、文字入力時に表示されたソフトウェアキーボードを、TextField や キーボード以外のばしょをタップして消す方法です。
確か Android は特に指定しなくても入力欄外をタップすればキーボードは非表示になったと思うのですが…iOS はわざわざ実装しないと消えないんですね…。
今回参考にさせていただいたサイトはこちらから。
[Swift] resignFirstResponder 以外でキーボードを隠す – Qiita
https://qiita.com/takecian/items/ebcdd3cc37c90a054020
実装方法は下記の通りです。
画面がタップされた時に呼ばれる touchesBegan
をオーバーライドして、その中にキーボードを閉じる処理を追加します
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { // キーボードを閉じる view.endEditing(true) }
他にも、UITextField
で resignFirstResponder
メソッドを使う方法もありますが、こちらの方法だと、TextField
が複数あった場合、全ての TextField
でメソッドを実行しなければいけないので面倒です。
かく言う私も、最初は resignFirstResponder
を使っていたのですが、endEditing
を知り、速攻でこちらに書き換えました。
アプリの挙動にも全く問題ないので、よほどのことがない限りは、view.endEditing(true)
を使った方が簡単だと思います!
以上、UITextField 入力後に、入力欄外やキーボード以外の画面をタップしてソフトウェアキーボードを非表示にする方法でした。
ご参考になれば幸いです。
なお、Swift で実装しとくと便利かな?な機能その1 はこちらです。
【Swift】UITextField入力後にキーボードのリターンキーで次のUITextFieldに移動する
https://cpoint-lab.co.jp/article/201911/12629/
必須ではないですが、こちらもあると便利かもしれません。