6

私は最近問題に遭遇しました。私の iPad アプリは、どういうわけか iPad の自動回転を妨げています。私のアプリは UISplitView をロードし、両方のビュー コントローラーが shouldAutorotateToInterfaceOrientation: に対して YES を返します。info.plist を設定して、4 つの方向すべてに「サポートされているインターフェイスの方向」キーを含めました。ただし、アプリを実行すると、デバイスを回転しても splitView は回転しません (UIDeviceOrientationDidChangeNotification を受け取っていても)。さらに、iPad のホーム画面で開始した別の方向でアプリを終了すると、アプリを実行せずに再度回転するまで、正しいビューに自動回転しません....どんなアイデアでも大歓迎です... .

4

6 に答える 6

8

UISplitViewController私が今まで使用しなければならなかった最も気まぐれなView Controllerサブクラスの1つです。「完全に」動作させるには、アプリケーションのウィンドウに単一のルート ビューとして存在する必要があります。ただし、いくつかの策略でこれを回避できます。私の場合、ビュー コントローラーとしてUITabBarController少なくとも 2 つの異なる が必要でした。UISplitViewControllerUISplitViewControllerDelegate

Appleが将来UISplitViewController、他のコンポーネントとの互換性を高めることを願ってUIKitいます...

于 2010-09-01T18:35:51.427 に答える
5

2 つの従属 UINavigationController で同じ問題に遭遇しました。私の場合、左側のコントローラーで shouldAutorotateToInterfaceOrientation: をオーバーライドして常に「YES」を返すと、回転が機能し始めました。

于 2011-02-25T07:21:17.813 に答える
2

私はこれがうまくいくことを発見しました-UISplitViewController実装の両方の子を提供しshouldAutorotateToInterfaceOrientationます:

つまり、次のようなものがある場合:

        MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPad" bundle:nil];
        UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

        DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
        UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

        self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];

       self.window.rootViewController = self.splitViewController;

次に両方を定義し、実装する必要がrootViewControllerあります。NSApplicationMasterViewControllerDetailViewController

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return YES;
}

回転が確実に機能するように。

于 2013-06-05T07:13:19.807 に答える
1

UISplitViewController はルート ビュー コントローラーとして設定されていますか? そうでない場合は、それが問題の原因である可能性があります。私は同様の問題を抱えていました.ステータスバーは回転しますが、詳細ビューとマスタービューはそのまま残ります。UISplitViewController がルートになるようにビューを再配置し、「メイン メニュー」が分割ビューの上にモーダル ビュー コントローラーとして表示され、回転の問題が解消されました。

iPad プログラミング ガイドによると、「Split View Controller のビューは、常にアプリケーション ウィンドウのルート ビューとしてインストールする必要があります。」

お役に立てれば。

于 2010-06-25T16:16:53.753 に答える
0

私は今同じ問題を抱えていました。その理由は、UISplitViewController のビューに加えて、誤って別のビューをウィンドウに追加してしまったためです。余分なビューを削除すると、機能しました。

于 2010-06-13T19:24:53.877 に答える
0

あなたの最初の問題は、UISplitView が自動回転を妨げているということです。自動回転を有効にする代わりに、Splitview のサブクラスを使用してみてください。

@implementation SplitViewControllerRotating
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    NSLog(@"SplitViewControllerRotating shouldAutorotate");
    return YES;
}
@end

あなたの2番目の問題は奇妙に聞こえます。アプリを終了した後、iPad がインターフェイスの向きを認識できるように、回転する必要があると言いました。それを手伝うことはできません。

于 2010-05-27T08:32:12.180 に答える