2

UITabBarController 内に UINavigationController があります。iOS 6 での自動回転に関してコミュニティが提案するすべてのことを試してみましたが、成功しませんでした。最終的に、オリエンテーションに変更を加えなかった UINavigationController にカテゴリを作成することにしました (ただし、関数は呼び出されました)。

ここに画像の説明を入力

次に、次のように UITabBarController のカテゴリを作成しました。

#import "UITabBarController+ios6Rotate.h"

@implementation UITabBarController (ios6Rotate)

-(BOOL)shouldAutorotate
{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortraitUpsideDown;;
}

@end

そしてこれを得ました:

Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'preferredInterfaceOrientationForPresentation must return a supported interface orientation!

しかし、私の向きはすべてサポートされていますか?! うーん

次に、コードを次のように変更しました。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortraitUpsideDown;
}

そして、それは私のアプリを逆さまに開始しましたが、それでも回転しません。何が起こっているのかわかりません。この時点で、ios6 で任意の種類のローテーションを確認したいと思います。どちらの側でもかまいませんが、何も機能していないようです。

4

2 に答える 2

2

正しい を追加していることを確認する必要がありますsupportedInterfaceOrientationsviewControllerカテゴリ内の対応する の向きメソッドを呼び出すことができます。

たとえば、UINavigationControllerカテゴリでは次のようになります

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

-(NSUInteger)supportedInterfaceOrientations
{
   return [self.topViewController supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
   return [self.topViewController preferredInterfaceOrientationForPresentation];
}
于 2013-04-08T09:49:35.493 に答える
2

理解するのに数時間かかりました。これが解決策です: 何らかの理由で、以前のプログラマーは次のようなことをしました:

 [window addSubview:[someController view]];  // In the appDelegate

私がする必要があったのは、これを次のように置き換えることだけでした:

  [self.window setRootViewController:someController];

自動回転方向がオンに戻りました!

于 2013-04-08T11:05:05.627 に答える