2021年4月25日日曜日

Swift5 適当な箇所をタップしてキーボードを非表示にする方法

Swift5 適当な箇所をタップしてキーボードを非表示にする方法

概要

テキストフィールドなどをタップするとソフトウェアキーボードが表示され入力することができます
キーボードを非表示にする場合は Entry をタップするか別のテキストフィールドにフォーカスを変更する必要があります
それだとかなり UX が悪いので適当な箇所をタップした際にキーボードが消えるようにする方法を紹介します

環境

  • Swift5
  • Xcode 12.4 (12D4e)

UIViewController の extension を作成する

どこでもいいので以下のコードを書き加えます
トップページの UIView クラスの先頭などが良いと思います
必ず class の外に記載するようにしてください

extension UIViewController {
    func hideKeyboardWhenTappedAround() {
        let tap = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false            
        view.addGestureRecognizer(tap)
    }
    @objc func dismissKeyboard() {
        view.endEditing(true)
    }
}

viewDidLoad で呼び出す

先程定義した extension を viewDidLoad で呼び出します
当然ですが UIView を継承している View の viewDidLoad 関数内で呼び出してください

override func viewDidLoad() {
    super.viewDidLoad()
    self.hideKeyboardWhenTappedAround()
}

参考サイト

0 件のコメント:

コメントを投稿