MPMoviePlayer-在iOS5上进入全屏将停止播放并使屏幕变黑

MPMoviePlayer-在iOS5上进入全屏将停止播放并使屏幕变黑,ios,ios6,mpmovieplayercontroller,Ios,Ios6,Mpmovieplayercontroller,我只是在我的应用程序测试中遇到了一个奇怪的行为。 该应用程序包含一个视频流,由MPMoviePlayer播放,当在iOS6上进入全屏(通过播放器控制器上的按钮)时,屏幕变为空白,电影停止播放。在iOS5上,电影按预期继续 我相信这将是iOS6中的一个bug,因此我想知道: -还有其他人经历过这种行为吗? -这是我的代码中的错误,还是操作系统中的错误? -对如何处理这件事有什么建议吗 在这两款手机上,当视频包含在屏幕上的一帧(作为视图的一部分)中时,视频流按预期播放。 然而,当进入全屏时,它们是不

我只是在我的应用程序测试中遇到了一个奇怪的行为。 该应用程序包含一个视频流,由
MPMoviePlayer
播放,当在iOS6上进入全屏(通过播放器控制器上的按钮)时,屏幕变为空白,电影停止播放。在iOS5上,电影按预期继续

我相信这将是iOS6中的一个bug,因此我想知道:
-还有其他人经历过这种行为吗?
-这是我的代码中的错误,还是操作系统中的错误? -对如何处理这件事有什么建议吗

在这两款手机上,当视频包含在屏幕上的一帧(作为视图的一部分)中时,视频流按预期播放。 然而,当进入全屏时,它们是不同的。我在两部手机上都拍下了这种行为

在相对较新的iPhone 4S(运行iOS 5.1.1)上,以下(预期)行为:

在iPhone 3S(升级至iOS 6.0)上,以下(意外)行为:

处理播放按钮的代码:

-(IBAction) playButtonClicked:(id)sender
{    
    NSURL* url = [NSURL URLWithString:self.experiment.videoPath];
    self.mpController = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [self.mpController prepareToPlay];
    self.mpController.view.frame = CGRectMake(0, 0, 320, 214);
    [self.view addSubview:self.mpController.view];

    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(movieFinishedCallback:)                                                 
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:self.mpController];

    [self.mpController play];
}
任何关于如何解决这个问题的提示或建议都将不胜感激

验尸-代码和解释:

当电影在iOS6(而不是iOS5)上进入全屏时,
viewwilldisappear
viewdidefine
被调用

解决方案是确保在使用上述任一方法关闭视频播放器之前,
MPMovieplayerController
未运行
fullscreen

我的新代码变成:
(注意
&!self.mpController.fullscreen

-(void)viewDidDisappear:(BOOL)animated
{
    if(self.mpController && !self.mpController.fullscreen){
        [[NSNotificationCenter defaultCenter]
            removeObserver:self
            name:MPMoviePlayerPlaybackDidFinishNotification
         object:self.mpController];
        [self.mpController.view removeFromSuperview];
        self.mpController = nil;
    }
}

请确保您没有停止或释放ViewWillEnglish或ViewDidEnglish中的视频播放器。

您是否在ViewWillEnglish或ViewDidEnglish中执行任何会导致视频停止的操作?这正是我的初衷。您是对的。当视图取消时,我正在释放视频播放器。因此,请从
if(self.mpController)更新我的检查
如果(self.mpController&&!self.mpController.fullscreen)
在放弃控制器之前,控制器确实解决了这个问题。我喜欢他们改变调用stuf的方式:我的评论变成了答案:)