私のアプリケーションには、ナビゲーション コントローラーを含むタブ バーがあります。
横向きに回転するときは、次のように横向きビューをナビゲーション コントローラー スタックにプッシュして、別のビューに切り替えます。
- (void) orientationDidChange: (NSNotification *) notification {
if (self.tabBarController.selectedViewController == self.navigationController) {
if (self.navigationController.topViewController == self &&
[[notification name] isEqualToString: kOrientationLandscape]) {
[self.navigationController pushViewController: landscapeViewController animated: NO];
}
if (self.navigationController.topViewController != self &&
[[notification name] isEqualToString: kOrientationPortrait]) {
[self.navigationController popViewControllerAnimated: NO];
}
}
}
これは正常に機能しますが、縦向きに戻すと、ビューが正しく表示され、ナビゲーション バーの高さと推測される分だけ「ジャンプ」します。ビューの上部は、ナビゲーション バーの後ろに隠されます。
通常の方法で別のコントローラーを上に押してから、縦向きのビューに戻すと、正しく表示されます。これは、横向きから元に戻すときにのみ発生します。
また、シミュレーターでは問題なく動作しますが、iPhone では動作しません。私は2.0用にビルドしていますが、それ以降のバージョンでも同じようです。
何か案は?
乾杯アッシュ