iphone - 按下主页按钮时 MPMoviez PlayerViewController 消失

标签 iphone objective-c ios xcode mpmovieplayercontroller

我正在创建我的 MPMoviePlayerViewController,如下所示:

MPMoviePlayerViewController *playerView = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[self presentMoviePlayerViewControllerAnimated:playerView];

它工作正常,直到我按下主页按钮:这样,在我重新打开应用程序后,播放器 View Controller 就消失了,我看到了我最初调用它的 View Controller 。如果我双击主页按钮,打开多任务面板,播放器不会消失,而只是暂停(应该如此)。

那么我该如何防止这种情况发生(关闭并重新打开应用程序应该会让我重新播​​放视频)?

更新: 我注意到,如果我在“正在加载...”文本出现时关闭并重新打开应用程序,播放器不会消失。在这种情况下,返回应用程序可以让播放器继续加载视频以最终开始播放。然而,之后关闭应用程序(当视频正在播放或暂停时)不可避免地会杀死播放器 View Controller ......

最佳答案

尝试这样:

 MPMoviePlayerViewController *playerView = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
    playerView.view.frame = self.view.frame;
    [self presentMoviePlayerViewControllerAnimated:playerView];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(playbackStateChanged:)
     name:MPMoviePlayerPlaybackStateDidChangeNotification
     object:moviePlayerController];

     [playerView.moviePlayer play];

之后添加这两个方法:

- (void) movieFinishedCallback:(NSNotification*) aNotification 
{
    moviePlayerController = [aNotification object];
    [moviePlayerController.moviePlayer stop];
    [[NSNotificationCenter defaultCenter] 
     removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification
     object:moviePlayerController];
    [moviePlayerController autorelease];
    NSLog(@"stopped?");
}

- (void)MPMoviePlayerDidExitFullscreen:(NSNotification *)notification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerDidExitFullscreenNotification 
                                                  object:nil];

    [moviePlayerController.moviePlayer stop];
    MPMoviePlayerController *player = [notification object];
    [[NSNotificationCenter defaultCenter] 
     removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification
     object:player];
    [moviePlayerController dismissMoviePlayerViewControllerAnimated];
}

关于iphone - 按下主页按钮时 MPMoviez PlayerViewController 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380781/

相关文章:

objective-c - iPhone SDK Objective C 是否支持函数内的函数?

ios - 如何使用 Storyboard为不同的 iPhone 屏幕尺寸设置不同的字体大小?

iphone - 多个 View Controller 的方向

ios - 当 "View controller-based status bar appearance"=YES 时隐藏 ios 状态栏

ios - ios 禁用相机抖动

iphone - 检查核心数据数据库中实体存在的通用方法

iphone - 无法设置 UILabel 属性

ios - iOS如何在一个巨大的字符串的2个字符串之间找到多个字符串?

ios - 在 iOS 9 中点击 UITextView 中的 NSLinkAttributeName 链接不起作用

ios - NSFetch请求 : FetchBatchSize and Faulting Behaviour