浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

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

  • この記事いいね! (0)