概要
テキストフィールドなどをタップするとソフトウェアキーボードが表示され入力することができます
キーボードを非表示にする場合は 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 件のコメント:
コメントを投稿