1
私は2つのビューコントローラ、ルート、および詳細を持っています。pushViewController: - デバイスがランドスケープモードの場合、ポートレートのみのモードで表示する方法は?
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait
|| interfaceOrientation == UIInterfaceOrientationLandscapeLeft
|| interfaceOrientation == UIInterfaceOrientationLandscapeRight
|| interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}
上記のコードは、ルートビューコントローラのために完璧に動作します:それは、次のコードを持っているので、ルートビューコントローラは、風景やポートレートの向きをサポートしています。
ルートビューコントローラが表示されていて、ユーザーがデバイスをランドスケープモードにすると、ビューはそれに応じて調整されます。この時点から、ディテール・ビュー・コントローラーをスタックにプッシュすると、横長モードでロードされます。しかし、私はポートレートモードのみをサポートするように設定しているので、そうしてはいけません。私は私の詳細ビューコントローラに以下のコードを使用しています:
2番目のビューコントローラで- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
私は既に持っています。しかし、ちょうど楽しみのために私はとにかくそれを試してみました...そして、私は同じ結果を受け取ります。私の2番目のビューは、縦長ではなく横長モードで読み込まれます... – bpatrick100
はい、それはまたあなたのためにPortraitUpsideDownを処理します。 – robertvojta
そして機能しない回転の理由は、shouldAutorotate ...が物理デバイスのローテーション時にのみ呼び出されるということです。この質問を確認する必要があります - http://stackoverflow.com/questions/2922919/transitioning-to-landscape-rotation-within-a-inavigationcontroller – robertvojta