我的 MPMovies PlayerViewController 遇到问题:如果控制器在指定的 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];
在解雇控制器之前。
上面,player是这样获得的MPMoviePlayerController对象:
MPMoviePlayerController *player = [notification object];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)