2

ナビゲーション コントローラー内に UIView があります。このビューがランドスケープに入らないようにしようとしていますが、使用しようとしているメソッドが起動しません。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if(interfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        return NO;
    }
    else if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
    {
        return NO;
    }
    return NO;
}
4

3 に答える 3

4

ではなく、return NO;親ナビゲーション コントローラまたは に設定する必要があります。UIViewControllerUIView

また、これはより少ないコードで同じように機能します。

iOS 5.x

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

iOS6

iOS 6 以降、shouldAutorotateToInterfaceOrientation:廃止予定です。supportedInterfaceOrientationsビュー コントローラーがメソッドをオーバーライドしない場合UIKit、アプリ デリゲートまたはアプリの Info.plist ファイルから既定の回転を取得します。

以下を使用する必要があります。

- (NSUInteger)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0);
于 2012-07-11T21:33:16.443 に答える
1

もう 1 つのオプションは、展開情報を変更することです。

スクリーンショット

于 2014-09-10T23:29:07.583 に答える
0

UIViewControllerこのメソッドは、 ではなくインスタンスに実装する必要がありますUIView

また、実際にNOはすべての方向に戻っていますが、これは正しくありません。YES少なくとも 1 つのオリエンテーションに戻る必要があります(最も一般的なのはUIInterfaceOrientationPortrait)。

于 2012-07-11T21:33:24.643 に答える