【Swift】UIScrollView実装時に入力欄外タップでキーボードを閉じる方法

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

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

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

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

CTR IMG