1

私はそれを縦向きでのみ表示したいビューコントローラーを持っているので、iOS6で次のことを行いました。

-(BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

ただし、デバイスを回転させても、横向きになります。これをチェックする他の場所はありますか?ブレークポイントを入れてヒットsupportedInterfaceOrientationsしましたが、それでも回転します

4

3 に答える 3

4

ナビゲーションコントローラーはありますか?iOS6が自動回転できるものを決定する方法が変更されました。ビューコントローラのsupportedInterfaceOrientationsを正しく要求していますが、ナビゲーションスタック階層内の別の要素に対して「shouldAutorotate」を要求し、その回答を受け入れている可能性があります。あなたのnavigationController/tabviewControllerがこの質問にyesを返した場合、それはあなたのViewControllerと相談しません。

于 2012-10-10T18:37:34.460 に答える
2

また、アプリデリゲートでアプリがサポートする向きを提供する必要があります。

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
    return UIInterfaceOrientationMaskPortrait;
}

ルートビューコントローラを適切に追加していることを確認してください(サブビューとして追加しないでください)が、以下を使用してください。

[window setRootViewController:myVC];

また、View Controllerがの中にあるUINavigationController場合は、navigationcontrollerに次のカテゴリを使用する必要があります。

@implementation UINavigationController (autorotate)

- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait;
}

@end

iOS 6では、最上位のフルスクリーンコントローラーのルートビューコントローラーのみが回転について尋ねられます。これにはUINavigationController、このクラスはビューコントローラに問い合わせず、直接応答します。UINavigationControllerAppleは現在、出力を上書きするためにサブクラス化を提案していますsupportedInterfaceOrientations's

于 2012-10-10T18:42:56.160 に答える
0

サポートされている向きを確認するときは、アプリデリゲートよりも優先度が高いため、プロジェクト設定とinfo.plistで縦向きのみが選択されていることを確認してください

于 2013-01-09T08:23:12.210 に答える