向きを変えるためにNavControllerStackでほぼすべてのプッシュまたはポップを必要とするiPhoneアプリケーションを入手するのに苦労しています。
基本的に、最初のビューはポートレート、2番目のランドスケープは3番目のポートレートです(はい、これは理想的ではないことはわかっていますが、それがデザインであり、実装する必要があります)。
私はここでさまざまなアドバイスを受けてきました....
デバイスを自動回転させずにiPhoneで回転を検出するにはどうすればよいですか?
新しいビューをUINavigationViewControllerにプッシュするときに縦向きを強制
するiPhoneの向きを設定するための文書化された方法はありますか?
しかし、完全な成功はありません。
3.1.2に対してリンクするように設定すると、上記のリンクされた記事を読んだときに、ポートレートビューが
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
次に、そのビューは横向きに回転して表示されます。何が起こるかというと、それは「壊れた」縦向きの形で現れ、デバイスが回転すると正しく回転します。
コントローラをポートレートビュー(適切なshouldAutoRotate ...があります)に戻すと、デバイスがポートレート方向に戻るまで、壊れたランドスケープビューのままになります。
また、shouldautorotateメッセージをすべて削除し、代わりにビューを変換して強制的に回転させようとしました。[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
この種の動作は、ステータスバー(実際にはアプリケーションで非表示になっています)を移動することで、キーボードが必要に応じて正しい方向で表示されることを理解しました。
このアプローチの問題は、ステータスバーがない場合、ステータスバーの変換が奇妙で醜いことです。変更するたびに、ページ上に影が表示されます。
それで。私は何が欠けていますか。
1)3.1.2(またはそれ以前)では、AutorotateToInterfaceOrientationは、コントローラーを押すだけで目的の方向を提供する必要があると考えるのは間違っていますか?
2)キーボードを正しい向きで表示する別の方法はありますか。
3)文書化されていないAPI呼び出しは進むべき道ですか(いいえ!)