11

現在、iPad で動作するようにユニバーサル バイナリに変換している iPhone アプリケーションがあります。レイアウトに関して必要なすべてを正常に実装したため、アプリで完全な横向き機能がサポートされるようになりました (以前は主に縦向きモードを使用してコンテンツを表示していました)。

しかし、奇妙な問題が 1 つあります。これはランドスケープ モードでのみ発生します。View Controller をスタックにプッシュすると、前の View Controller に戻るには戻るボタンを 2 回タップする必要があります。最初のタップでは空白のビューが表示されますが、左側の戻るナビゲーション ボタンに同じ名前が表示されているため、2 回目のタップではコントローラーが元のビューに戻ります。

テストする iPad がないので、シミュレーターに頼っています。この問題は iPhone では発生せず、ポートレート モードに戻しても発生しません。

私のアプリは、VC 用にロードされたナビゲーション コントローラーを備えた tabbarcontroller で構成されています。

//application delegate
- (void)applicationDidFinishLaunching:(UIApplication *)application
//....
WebHelpViewController *vc8 = [[WebHelpViewController alloc] init];
UINavigationController *nv8 = [[UINavigationController alloc] initWithRootViewController:vc8];

[self.tabBarController setViewControllers:[NSArray arrayWithObjects:nv1,nv2,nv3,nv4,nv5,nv6,nv7,nv8,nil]];

ランドスケープ機能を実装するために、UITabBarController は必要に応じて自動回転するようにオーバーライドされます。

//CustomTabBarController.m
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return [[(UINavigationController *)self.selectedViewController topViewController] shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

... 正常に動作します。このメソッドを使用して新しいビューに移動します

SomeViewController *vc = [[SomeViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
[vc release];

これは単なるシミュレーション エラーですか? この問題を解決するにはどうすればよいですか?

4

1 に答える 1

10

別のユーザーが次のようViewControllerに応答しているようです。

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

まずこれを確認してください。

于 2010-04-22T21:31:13.250 に答える