Iphone MPMoviePlayerViewController在按下home(主页)按钮时消失

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

我正在创建mpmovieplayervewcontroller,如下所示:

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];
}