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