以前、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 を実装時に、入力欄やキーボード外をタップしてソフトウェアキーボードを閉じる方法でした。
ご参考になれば幸いです。