我有一个使用子类MPMoviePlayerViewController播放视频片段的应用,我想确保当用户离开应用时(当它进入后台时)电影播放器被解除。 这是必要的,因为当他们重新进入应用程序时,它似乎没有正确加载电影URL,因此他们得到一个不断加载的空白电影播放器。
通常情况下,当按下完成按钮时,我会使用[self dismissMoviePlayerViewControllerAnimated]关闭电影播放器。
当应用程序重新启动(或移至后台)时,关闭播放器的正确方法是什么?
答案 0 :(得分:2)
好的,当应用程序即将发送到后台时,我最终使用Notifications“清理”我的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];
}
答案 1 :(得分:0)
嗯,经过搜索,我在SO中找到了这个答案: dismiss a modalviewcontroller when the application enters background 基本上,您为UIApplicationDidEnterBackgroundNotification通知设置了一个NSNotificationCenter观察器,其中选择器将调用视图控制器的关闭。
看看答案,它有代码片段。
希望这有效。