在UIWebview中的MPMoviePlayer全屏播放期间旋转后移动UINavigationBar

时间:2012-06-11 21:51:40

标签: ipad uiwebview rotation mpmovieplayer navigationbar

我在网上搜索但我找不到任何解决方案。

这是我的问题:

我将YouTube视频嵌入到UIWebView中。它可以工作,但当我进入全屏播放并旋转我的iPad时,UINavigationBar会被移动(见下图)。我知道在网络视图中没有直接控制视频播放器,但我不知道如何解决它。

由于

Splitted Navigation Bar

2 个答案:

答案 0 :(得分:1)

使用MPMoviePlayerNotification无法解决此问题,因为UIWebView视频不使用MPMoviePlayerViewController或它是开发人员私有的。 但是,还有另一种方法可以解决这个问题。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(handleStatusBarFrameDidChange)
                                             name:UIApplicationDidChangeStatusBarFrameNotification
                                           object:nil];

- (void)handleStatusBarFrameDidChange {
    self.navigationController.navigationBarHidden = YES;
    self.navigationController.navigationBarHidden = NO;
}    

答案 1 :(得分:0)

我在iPhone应用程序上遇到了类似的问题。

我想知道这是否正确,但现在下面的代码解决了它。

1。在webivew的初始化方法中添加了观察者。

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

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

当你不再需要它们时,应该删除观察者。我只是将代码放在webview的dealloc方法中。

[[NSNotificationCenter defaultCenter] removeObserver:self];

2。电影开始时隐藏导航栏,并在电影结束后再次显示。
*代码中的contentsViewController是我的webview的所有者。所以就我而言。

- (void)youTubeStarted:(NSNotification *)notification
{
    self.contentsViewController.navigationController.navigationBarHidden = YES;
}

- (void)youTubeFinished:(NSNotification *)notification
{
    self.contentsViewController.navigationController.navigationBarHidden = NO;
}

我从How to receive NSNotifications from UIWebView embedded YouTube video playback

开始了