2012-10-23 71 views
1

我想用MPMoviePlayerViewController播放视频。所以在我的视图控制器中,我注册为MPMoviePlayerLoadStateDidChangeNotification的观察者。MPMoviePlayerLoadStateDidChangeNotification适用于iOS 5,但不适用于iOS 6

我再初始化MPMoviePlayerViewController:

self.mPlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"<videoURL>"]]; 

,并等待通知到达。当它执行此代码时:

MPMoviePlayerController* playerController = notification.object; 

if ([playerController loadState] & MPMovieLoadStatePlayable) { 
    if (self.mPlayerVC) { 
     [self presentMoviePlayerViewControllerAnimated:self.mPlayerVC]; 
    } 
} 

任何人都知道为什么这适用于iOS 5但不适用于iOS 6?谢谢

回答

2

似乎有iOS 6的MediaPlayer.framework中的错误。要初始化的MPMoviePlayerViewController

self.mPlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"<videoURL>"]]; 
[self.mPlayerVC.moviePlayer prepareToPlay]; 

后获得视频播放我打电话prepareToPlay现在通知再次进来,但应用程序崩溃时我打电话[self presentMoviePlayerViewControllerAnimated:self.mPlayerVC];在被称为该MPMoviePlayerLoadStateDidChangeNotification的方法。

,防止死机更换

[self presentMoviePlayerViewControllerAnimated:self.mPlayerVC]; 

的东西,如

if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) { 
[self presentViewController:self.mPlayerVC animated:YES completion:nil]; 
} 
else if ([self respondsToSelector:@selector(presentModalViewController:animated:)]) { 
[self presentModalViewController:self.mPlayerVC animated:YES]; 
} 
相关问题