shouldAutorrotate メソッドを定義しようとしていますが、呼び出されていないため、どこで定義すればよいかわかりません。私のプロジェクトには、3 つのタブ (それぞれにルート ナビゲーション コントローラーがあります) を持つ UITabBarController があります。私の目的は、特定のケースでオートローテーションを無効にすることです。
ありがとうございました!
shouldAutorrotate メソッドを定義しようとしていますが、呼び出されていないため、どこで定義すればよいかわかりません。私のプロジェクトには、3 つのタブ (それぞれにルート ナビゲーション コントローラーがあります) を持つ UITabBarController があります。私の目的は、特定のケースでオートローテーションを無効にすることです。
ありがとうございました!
わかりました、解決しました。私がやったこと:私が定義した最上位のナビゲーションコントローラーで
-(BOOL)shouldAutorotate {return [self.visibleViewController shouldAutorotate];}
そして、次のviewControllerで
-(BOOL)shouldAutorotate {return NO;}
みんなありがとう!!!
そのメソッドをviewcontroller.m
ファイルに記述して、自動回転を無効にすることができます。iOS6のコードは次のとおりです。
#ifdef IOS_NEWER_OR_EQUAL_TO_6
-(BOOL)shouldAutorotate
{
return NO;
}
#endif
iOS 6.0 リリース ノートを読む:
自動回転は iOS 6 で変更されています。iOS 6 では、UIViewController の shouldAutorotateToInterfaceOrientation: メソッドは非推奨です。その代わりに、 supportedInterfaceOrientationsForWindow: および shouldAutorotate メソッドを使用する必要があります。
より多くの責任がアプリとアプリ デリゲートに移行しています。現在、iOS コンテナー (UINavigationController など) は、自動回転する必要があるかどうかを判断するために、子に相談しません。デフォルトでは、アプリとビュー コントローラーのサポートされるインターフェイスの向きは、iPad イディオムの場合は UIInterfaceOrientationMaskAll に設定され、iPhone イディオムの場合は UIInterfaceOrientationMaskAllButUpsideDown に設定されます。
ビュー コントローラーでサポートされているインターフェイスの向きは、時間の経過とともに変化する可能性があります。アプリでサポートされているインターフェイスの向きでさえ、時間の経過とともに変化する可能性があります。システムは、デバイスが回転するたびに、またはビュー コントローラーがフルスクリーン モーダル プレゼンテーション スタイルで表示されるたびに、サポートされているインターフェイスの向きを最上位のフルスクリーン ビュー コントローラー (通常はルート ビュー コントローラー) に問い合わせます。さらに、サポートされている向きは、このビュー コントローラーが shouldAutorotate メソッドから YES を返した場合にのみ取得されます。システムは、View Controller のサポートされている向きとアプリのサポートされている向き (Info.plist ファイルまたはアプリのデリゲートの application:supportedInterfaceOrientationsForWindow: メソッドによって決定される) を交差させて、回転するかどうかを決定します。
システムは、アプリの supportedInterfaceOrientationsForWindow: メソッドによって返された値と、最上位のフルスクリーン コントローラーの supportedInterfaceOrientations メソッドによって返された値を交差させることによって、向きがサポートされているかどうかを判断します。
setStatusBarOrientation:animated: メソッドは完全に廃止されたわけではありません。これは、最上位のフルスクリーン ビュー コントローラーの supportedInterfaceOrientations メソッドが 0 を返す場合にのみ機能するようになりました。
そのため、最初にアプリのデリゲートで動作を実装しようとします。それがあなたのユースケースにとって粗すぎる場合は、個々のコンテンツ ビュー コントローラーに対して-shouldAutorotate
(単一の!) メソッドを実装しようとします。r
それが機能しない場合 (上記の引用を参照)、このメソッドをコンテナー コントローラーに実装します。タブ バー コントローラーまたはナビゲーション コントローラー。
WWDC 2012 セッション #236、iOS 上のビュー コントローラーの進化も参照してください。