UINavigationViewControllerの子ViewControllerのshouldAutorotateが呼ばれない

こんにちは、JAGA(ja_gaimopotato)です。

アプリを回転に対応すべく色々と調整しています。
基本的にはStoryboardで作るほうが楽なことが結構あって、コードでViewを追加していたところを作り直すなどの作業が多いです。

しかしながら、shouldAutorotateが呼ばれない問題が発生しました。

詳しく検証してみるとRootViewControllerがコンテナViewControllerとなっている時には子ViewControllerのshouldAutorotateが呼ばれないことに気が付きました。

これはどうやら、コンテナViewControllerの回転の制御が子ViewControllerにも適用されるからなのでしょう。

他のアプリでは大丈夫なコードが、動かないので本当に困っていました。

そういった情報をもろもろ調べていると下記サイトの情報がとてもわかり易く理解が深まりました。

shouldAutorotate : iOSアプリ開発記

この場合はUINavigationViewControllerのサブクラスかカテゴリでshouldAutorotatesupportedInterfaceOrientationspreferredInterfaceOrientationForPresentationを設定して子ViewControllerの各種メソッドを呼び出せばよいとのこと。

どうやら、shouldAutorotateが呼ばれないのは仕様らしく注意する必要があります。

カテゴリを作って、子ViewControllerで読み込んでおけば簡単に動作するようになりました。

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です