【Swift】UITextField入力後に画面をタップしてキーボードを非表示にする

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)
}

他にも、UITextFieldresignFirstResponder メソッドを使う方法もありますが、こちらの方法だと、TextField が複数あった場合、全ての TextField でメソッドを実行しなければいけないので面倒です。
かく言う私も、最初は resignFirstResponder を使っていたのですが、endEditing を知り、速攻でこちらに書き換えました。
アプリの挙動にも全く問題ないので、よほどのことがない限りは、view.endEditing(true) を使った方が簡単だと思います!

 

以上、UITextField 入力後に、入力欄外やキーボード以外の画面をタップしてソフトウェアキーボードを非表示にする方法でした。
ご参考になれば幸いです。

なお、Swift で実装しとくと便利かな?な機能その1 はこちらです。

【Swift】UITextField入力後にキーボードのリターンキーで次のUITextFieldに移動する
https://cpoint-lab.co.jp/article/201911/12629/

必須ではないですが、こちらもあると便利かもしれません。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG