2

アプリケーションで分割ビューを使用しています。
iOS 6 シミュレーターでアプリケーションを実行すると、向きの変更に応じて回転し、うまく動作しますが、iOS 5 または iOS 5.1 シミュレーターで同じアプリケーションを実行し、シミュレーターの向きを変更しても、向きの変更に応じて分割ビューが変更されません。
コードも追加します

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

-(BOOL)shouldAutorotate
{
    return YES;
}

そして、次のコードを使用して分割ビューを追加します - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; }

マスター ビューと詳細ビューの両方で上記の方法を使用します。

そして、次のコードを使用して分割ビューを追加しました

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
     // obj_PageControlViewController = [[PageControlViewController alloc]initWithNibName:@"PageControlViewController-iPad" bundle:nil];

     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];

     masterViewController.detailViewController = detailViewController;

     self.splitViewController = [[UISplitViewController alloc] init];
     self.splitViewController.delegate = detailViewController;
     self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];
     TabBarAppDelegate *appDelegate = (TabBarAppDelegate *)[[UIApplication sharedApplication] delegate];
     [appDelegate.window setRootViewController:self.splitViewController];

}

しかし、それは仕事ではありません。誰でも私を助けることができますか?

4

2 に答える 2

4

あなたは追加したと言いましたが、どこshouldAutorotateToInterfaceOrientation:に追加したかは言いませんでした。iOS 5.1 以前で UISplitViewController の自動回転を取得するには、分割ビュー コントローラーの両方の子ビュー コントローラー (マスター ビュー コントローラーと詳細ビュー コントローラーの両方) のビュー コントローラーを指定する必要があります。shouldAutorotateToInterfaceOrientation:

分割ビュー コントローラーがアプリケーションの最上位 (ルート) ビュー コントローラーであり、マスター/ディテール テンプレートによって設定されていると仮定すると、これは機能します。

ああ、面倒なことは省いてください: ではshouldAutorotateToInterfaceOrientation:、単に YES を返します。iPad では、常に自動回転が必要です。

于 2012-11-22T17:09:16.520 に答える
0

iOS5以下では使用する必要があります

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

あなたが上に投稿したもの(shouldAutorotate)はiOS6+用です

于 2012-11-22T16:56:55.427 に答える