1

shouldAutorrotate メソッドを定義しようとしていますが、呼び出されていないため、どこで定義すればよいかわかりません。私のプロジェクトには、3 つのタブ (それぞれにルート ナビゲーション コントローラーがあります) を持つ UITabBarController があります。私の目的は、特定のケースでオートローテーションを無効にすることです。

ありがとうございました!

4

3 に答える 3

2

わかりました、解決しました。私がやったこと:私が定義した最上位のナビゲーションコントローラーで

-(BOOL)shouldAutorotate {return [self.visibleViewController shouldAutorotate];}

そして、次のviewControllerで

-(BOOL)shouldAutorotate {return NO;}

みんなありがとう!!!

于 2013-03-15T09:09:52.533 に答える
1

そのメソッドをviewcontroller.mファイルに記述して、自動回転を無効にすることができます。iOS6のコードは次のとおりです。

#ifdef IOS_NEWER_OR_EQUAL_TO_6
-(BOOL)shouldAutorotate
{
   return NO;
}
#endif
于 2013-03-15T08:39:36.110 に答える
0

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 上のビュー コントローラーの進化も参照してください。

于 2013-03-15T08:42:35.480 に答える