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

【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 でモーダル画面を下にスワイプすると閉じる挙動を無効にする方法でした。
ご参考になれば幸いです。

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