以前、Swift
で iOS アプリを開発時に、入力欄やキーボード外をタップしてソフトウェアキーボードを閉じる方法についてご紹介しましたが、UIScrollView
を利用していた場合、また別の処理を追加する必要があるので、その方法についてまとめ。
なお、以前の記事はこちらです。
【Swift】UITextField入力後に画面をタップしてキーボードを非表示にする
https://cpoint-lab.co.jp/article/201911/12705/
UIScrollView
を使ってなければ上記記事の方法を使えます。
今回参考にさせていただいた記事はこちら。
【Swift5】UIScrollView使用時にキーボード外タップでキーボードを閉じる – Qiita
https://qiita.com/haru15komekome/items/2525de48a9382f3fa6c1
上記の記事によると、UIScrollView
を使用しているときに画面をタップした際、touchesBegan()
が呼ばれないことが原因とのことでした。
そのため、UIScrollView
を拡張する以下の処理を追加すればOKみたいです。
extension UIScrollView { open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { self.next?.touchesBegan(touches, with: event) } }
追加する処理は上記のみです。
あとは再ビルドして実機で確認したところ、入力欄やソフトウェアキーボード外をタップしてキーボードが閉じることを確認できました!
以上、UIScrollView
を実装時に、入力欄やキーボード外をタップしてソフトウェアキーボードを閉じる方法でした。
ご参考になれば幸いです。