0

私の UIViewController が自動回転できることを望みますが、他の uiviewcontroller ではなく、それだけです。この UIViewController は、自動回転できない UINavigationController に提示されます。このコードは iOS 5 および 4 で機能しますが、iOS6 では機能しません。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return (YES);
}

- (BOOL)shouldAutorotate
{
    return (YES);
}

- (NSUInteger)supportedInterfaceOrientations
{
    return (UIInterfaceOrientationMaskAll);
}

助けてthx :)

4

2 に答える 2

2

UINavigationController をサブクラス化し、このサブクラスで上記の回転メソッドを実装する必要があります。次に、次のように、回転可能なビュー コントローラーが表示されている場合にのみ、条件付きで YES/UIInterfaceOrientationMaskAll を返すことができます。

shouldAutorotateToInterfaceOrientation:

if ([self.navigationController.visibleViewController isKindOfClass:[MyRotatableViewController class]])
 return (YES);
else
 return (toInterfaceOrientation == UIInterfaceOrientationPortrait);

サポートされているインターフェイスの向き:

if ([self.navigationController.visibleViewController isKindOfClass:[MyRotatableViewController class]])
 return (UIInterfaceOrientationMaskAll);
else
 return (UIInterfaceOrientationPortrait);

ただし、子ビュー コントローラーではなく、ナビゲーション コントローラーでこれを行う必要があります。

于 2012-10-19T17:35:09.377 に答える
0

iOS 6は、「最もルートの多い」ViewControllerに回転についてのみ要求します。UINavigationControllerは他のコントローラーの下にあるため、これはUINavigationController(実際にはそのようなサブクラスであるため、回転デリゲートメソッドを配置する場所があります)である必要があります。また、ウィンドウのルートビューコントローラとして設定されていることを確認してください。

于 2012-10-19T19:00:23.507 に答える