【Swift】iOS13でモーダル画面を下にスワイプすると閉じるのを無効にする

Xcode の Simulator で動作検証を行っているときに見つけたのですが、iOS 13 から、モーダル遷移した画面って、下にスワイプすると消せるようになっていたのですね…。
操作性は確かに良いのかもしれませんが、現在開発中のアプリではその挙動は問題があるので、この「下スワイプで閉じる」を無効にすることにしました。

今回参考にさせていただいた記事はこちらから。

iOS13で追加されたモーダル画面が下スワイプ操作でdismissするのを無効にしたい – Qiita
https://qiita.com/eg_19_/items/e5c6e95a49dc31a2fa5c

 

方法は 2パターンあるとのことでしたが、私は modalPresentationStyle プロパティに .fullScreen を設定する方法をチョイスしました。
実装方法は下記のとおりです。

let secondPageController: SecondPageController = SecondPageController()
let navigationController = UINavigationController(rootViewController: secondPageController)
navigationController.modalPresentationStyle = .fullScreen
self.present(navigationController, animated: true, completion: nil)

SecondPageController ページに遷移する処理に、3行目の navigationController.modalPresentationStyle = .fullScreen を追加しました。
こちらを追加することで、iOS 12 以前のモーダル遷移のように、表示された画面が下スワイプで閉じなくなります。

ただし、モーダルを二重に開いている場合だと、スワイプで閉じる処理を無効にできないとのことでしたので、その場合は 2つ目の方法をお試しください。
こちらは私の環境では試していないので割愛します。実装の際は、上の参考記事をご確認ください。

 

以上、iOS 13 でモーダル画面を下にスワイプすると閉じる挙動を無効にする方法でした。
ご参考になれば幸いです。

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

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

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

CTR IMG