3

のaUIViewControllerからプッシュされた詳細ビューがあります。にいくつかのサブビューを追加します(例:、)。UITableViewUINavigationControllerUIViewControllerUITextViewUIImageView

私はこのiOS5コードを使用して、画像ビューが拡大された場合に自動回転を停止しました:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if (scrollView.isZoomed) {
    return NO;
}
else {
    return YES;
}

}

私はiOS6使用して同じことを達成しようとしています:

- (BOOL)shouldAutorotate {
return FALSE;
}

ただし、このメソッドが呼び出されることはなく、アプリは回転し続けます。

誰か助けてもらえますか?

4

1 に答える 1

3

これらのビューを管理するナビゲーションコントローラーがある場合、shouldAutorotateメソッドは呼び出されません。UINavigationControllerをサブクラス化し、メソッドshouldAutorotatesupportedIntervalOrientationsをオーバーライドする必要があります。

ドキュメントから:

現在、iOSコンテナ(UINavigationControllerなど)は、自動回転する必要があるかどうかを判断するために子に相談しません

編集 - - -

Lomaxが以下で説明するように、UINavigationControllerのサブクラス化はAppleによって推奨されていません。代わりにカテゴリを試す必要があります(このSOの質問はそれをよく説明しています):

@implementation UINavigationController 
-(BOOL)shouldAutorotate
{
    // your code
}

-(NSUInteger)supportedInterfaceOrientations
{
    (...)
}

@end
于 2012-11-27T16:50:01.607 に答える