我的 MPMoviePlayerViewController 有问题:如果 Controller 在指定的 URL 上找不到电影,它会显示一个白屏,我无法关闭它。

这是我启动电影播放器​​的方式:

- (void) playVideo:(NSString*)path
{
 NSURL* url = [NSURL URLWithString:path];

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

 double osversion = [[[UIDevice currentDevice] systemVersion] doubleValue];
 if (osversion >= 3.2)
 {
  mplayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:url];

  if (mplayerVC)
  {
   mplayerVC.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
   [mplayerVC.moviePlayer play];
   mplayerVC.moviePlayer.shouldAutoplay = TRUE;

  [self presentMoviePlayerViewControllerAnimated:mplayerVC];

  //[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadStateChanged:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
  }

 }
}

这就是 moviePlayBackDidFinish: 方法的样子

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

     NSError* error = [[notification userInfo] valueForKey:@"error"];
     if (error != nil)
     {
      // Movie ended with an error
      DLog(@"error=%@", error);
     }
     else
     {
      // Movie ended successfully
     }

     [self dismissMoviePlayerViewControllerAnimated];
     SAFE_DEL(mplayerVC);
    }

仅当 URL 指向错误时才会出现白屏

最佳答案

没关系,伙计们,我想通了。

显然在你必须调用的 moviePlaybackDidFinish 方法中

[player stop];

在解雇 Controller 之前。

上面, player 是这样获得的 MPMoviePlayerController 对象:
MPMoviePlayerController *player = [notification object];

关于iphone - 在播放错误时关闭 MPMoviePlayerViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4018836/

10-11 02:36