1

2番目のUIViewcontrollerをプッシュするUIViewcontrollerがあります。2番目のUIViewcontrollerにはUIWebviewがあります:いくつかのテキストと、youtube url(埋め込み)からのいくつかのビデオ。ビデオをクリックすると、プレーヤーが開いていて、画面はまだ縦向きモードであり、横向きに回転しません。

ビデオは、次の機能を備えたios5で正しく機能します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieIsPlaying:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];

- (void)movieIsPlaying:(NSNotification *)notification
{

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft animated:NO];
}

この問題は、ios6でのみ発生します。

これを解決する方法はありますか?

4

1 に答える 1

1

以下は、Apple の iOS SDK、XCode4.5+ からの引用です (UIViewControllerクラス リファレンス、ビューの回転の処理を参照)。

iOS 6 では、アプリは、アプリの Info.plist ファイルで定義されたインターフェイスの向きをサポートします。View Controller は supportedInterfaceOrientations メソッドをオーバーライドして、サポートされている向きのリストを制限できます。通常、システムは、ウィンドウのルート ビュー コントローラー、または画面全体に表示されるビュー コントローラーでのみ、このメソッドを呼び出します。子View Controllerは、親View Controllerによって提供されたウィンドウの一部を使用し、どの回転がサポートされているかに関する決定に直接参加しなくなりました。

iOS6でもクラスのshouldAutorotateToInterfaceOrientation:メソッドUIViewControllerはすでに廃止されています。

したがって、ルート ビュー コントローラーで、ff を実行します。

- (BOOL)shouldAutorotate {
  return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
  return UIInterfaceOrientationMaskPortrait;
}

ところで、「ルート ビュー コントローラー」はUIViewController、appDelegate のウィンドウ オブジェクトの rootViewController として設定したサブクラスです。通常、これは appDelegate のapplication:didFinishLaunchingWithOptions:メソッドで行います。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  // Override point for customization after application launch.
  self.window.rootViewController = [FFDashboardController create];
  [self.window makeKeyAndVisible];
  return YES;
}

この回答も確認してください

于 2012-12-14T12:19:17.643 に答える