0

我有一个使用子类 MPMoviePlayerViewController 播放视频剪辑的应用程序,我想确保在用户离开应用程序时(当它进入后台时)关闭电影播放器​​。这是必要的,因为当他们重新进入应用程序时,它似乎没有正确加载电影 URL,因此他们得到一个不断加载的空白电影播放器​​。

通常,当按下完成按钮时,我使用 [self dismissMoviePlayerViewControllerAnimated] 关闭电影播放器​​。

当应用程序退出活动(或移至后台)时,关闭播放器的正确方法是什么?

4

2 回答 2

2

好的,当应用程序即将发送到后台时,我最终使用通知来“清理”我的 MPMoviePlayerViewController。这允许我检测应用程序何时将要从我的应用程序委托以外的类发送到后台。

因此,当我创建电影播放器​​时,我添加了观察者以在应用程序发送到后台时调用我的“清理”函数。

(旁注 - 我还使用了一个观察者来防止电影视图在视频结束后自动关闭。这样用户必须按下“完成”按钮。该按钮还调用了 moviePlayerCleanup 方法。这确保观察者始终正确删除)

- (IBAction)buttonVideo:(id)sender {        

    // Register Movie Player for UIApplicationWillResignActiveNotification
    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(moviePlayerCleanup) name: UIApplicationWillResignActiveNotification object: nil];

/*...set video URL, options, add to subview, etc etc here....*/
}
-(void)moviePlayerCleanup{
    // Remove the movie player view controller from the ApplicationWillResign notification observers
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil];    
    //Dismiss view
    [self dismissMoviePlayerViewControllerAnimated];
}
于 2012-07-18T16:44:46.163 回答
0

好吧,经过搜索,我在这里找到了这个答案: 当应用程序进入后台时关闭 modalviewcontroller 基本上,您为 UIApplicationDidEnterBackgroundNotification 通知设置了一个 NSNotificationCenter 观察者,选择器将调用视图控制器的关闭。

看看答案,它有代码片段。

希望这有效。

于 2012-07-17T17:43:08.230 回答