Iphone MPMoviePlayerViewController在按下home(主页)按钮时消失
我正在创建mpmovieplayervewcontroller,如下所示:Iphone MPMoviePlayerViewController在按下home(主页)按钮时消失,iphone,objective-c,ios,xcode,mpmovieplayercontroller,Iphone,Objective C,Ios,Xcode,Mpmovieplayercontroller,我正在创建mpmovieplayervewcontroller,如下所示: MPMoviePlayerViewController *playerView = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL]; [self presentMoviePlayerViewControllerAnimated:playerView]; 在我按下home(主页)按钮之前,它工作正常:这样,在我重新打开应用程序后,play
MPMoviePlayerViewController *playerView = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[self presentMoviePlayerViewControllerAnimated:playerView];
在我按下home(主页)按钮之前,它工作正常:这样,在我重新打开应用程序后,player view controller(播放器视图控制器)不见了,我看到了我最初从中调用它的view controller(视图控制器)。如果我双击home(主页)按钮,打开多任务面板,播放器不会消失,只会暂停(应该是这样)
那么,我如何防止这种情况发生(关闭并重新打开应用程序会让我重新开始播放视频)
UPD:
我注意到,如果在“加载…”文本出现时关闭并重新打开应用程序,播放器不会消失。在这种情况下,返回应用程序可以让播放器继续加载视频,最终开始播放。但是,在此之后关闭应用程序(无论是在播放视频还是暂停视频时)不可避免地会杀死播放器视图控制器…请尝试以下操作:
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];
}
我在这里找到了答案: 然而,该问题(以及答案)的作者提到,他的应用程序因此被拒绝。您可以尝试此代码---
正如Arnold所说,当应用程序进入后台时,MPMoviePlayerViewController会关闭,当您离开嵌入它的视图控制器视图时,MPMoviePlayerViewController也会关闭。要解决这两个问题,请尝试将MPMoviePlayServiceWController保留为ivar或属性,并在调用vc的View:或应用程序重新进入前台时将其自身重置,如:
- (void) viewDidLoad{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reset) name:UIApplicationWillEnterForegroundNotification object:nil];
}
- (void) viewWillAppear:(BOOL)animated{
[self reset];
}
- (void) reset{
[_mpmpvc.moviePlayer prepareToPlay];
[_mpmpvc.moviePlayer pause];
}
谢谢,但这没用……什么都没变。
- (void) viewDidLoad{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reset) name:UIApplicationWillEnterForegroundNotification object:nil];
}
- (void) viewWillAppear:(BOOL)animated{
[self reset];
}
- (void) reset{
[_mpmpvc.moviePlayer prepareToPlay];
[_mpmpvc.moviePlayer pause];
}