追加: 私の質問は賛成票なしで頻繁に表示されることがわかったので、検索結果が得られないと判断しました。iOS6 で向きの変更を処理する方法について本当に良い答えがある質問にリダイレクトします
向きの変更に対する特定の要求: 制限された回転
賛成票を歓迎します:)
マスター ディテール テンプレートから新しいプロジェクトを作成し、横向きで開始しようとしました。ご存知の通り
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
メソッドは非推奨であり、使用する必要があります
- (NSUInteger)supportedInterfaceOrientations
および/または
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
これが私のコードです:
- (NSUInteger)supportedInterfaceOrientations {
NSLog(@"supported called");
return UIInterfaceOrientationMaskAll;//Which is actually a default value
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
NSLog(@" preferred called");//This method is never called. WHY?
return UIInterfaceOrientationLandscapeRight;
}
ご覧のとおり、優先される方法で横向きを返そうとしていますが、呼び出されることはありません。ps ドキュメントの状態:
解説 システムは、View Controller を全画面表示するときにこのメソッドを呼び出します。ビュー コントローラーが 2 つ以上の方向をサポートしているが、コンテンツがそれらの方向のいずれかで最適に表示される場合に、このメソッドを実装します。
ビュー コントローラーがこのメソッドを実装している場合、表示されると、そのビューは優先方向で表示されます (ただし、後でサポートされている別の回転に回転できます)。このメソッドを実装しない場合、システムは現在のステータス バーの向きを使用してビュー コントローラーを表示します。
問題は、なぜ preferredOrientation メソッドが呼び出されないのかということです。また、さまざまなコントローラーでさまざまな方向をどのように処理する必要がありますか?. ありがとう!PSは、質問を重複としてマークしません。同様の質問をすべて調査しましたが、回答がありません。