我的MPMoviePlayerController.When有问题我正在看视频,点击左上角的‘完成’按钮,MoviePlayer没有消失,即使代码看起来是调用的:
NSURL *url = [NSURL URLWithString:article.enclosureLink];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
// Set movie player layout
[moviePlayer setControlStyle:MPMovieControlStyleFullscreen];
[moviePlayer setFullscreen:YES];
// May help to reduce latency
[moviePlayer prepareToPlay];
// Register to receive a notification when the movie has finished playing.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieReadyToPlay:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:moviePlayer];和选择器:
- (void) movieReadyToPlay:(NSNotification*)notification {
MPMoviePlayerController *moviePlayer = [notification object];
if(moviePlayer.loadState == MPMovieLoadStatePlayable){
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:moviePlayer];
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
//moviePlayer.shouldAutoplay = YES;
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:YES animated:YES];
[moviePlayer play];
}
}
- (void) moviePlayBackDidFinish:(NSNotification*)notification {
MPMoviePlayerController *moviePlayer = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
[moviePlayer setFullscreen:NO animated:YES];
[moviePlayer.view removeFromSuperview];
[moviePlayer release];
NSLog(@"Finished movie!");
} 在我看来,这是一个非常简单的代码,但我肯定犯了一个愚蠢的错误。NSLog显示函数已被调用,但是播放器停留在它所在的位置,并且没有办法摆脱它。
而且,在所谓的释放之后,播放器仍然可以操作的事实似乎表明有一些根本的问题,我就是看不出是什么。
有没有人有建议?
更新:奇怪的是,在iPhone模拟器中它工作得很好!
Update2:我试着创建了一个特定的UIviewcontroller,尽管它不是我想要的方式,因为动画效果不好。但我学到的是我也有同样的问题。这看起来和解雇球员有关,但它又开始了。
当我将self.moviePlayer设置为setFullscreen:YES动画:YES;在viewDidApear中,并单击播放器中的“完成”按钮时,当我点击完成按钮时,视频将重新开始(再次调用viewDidAppear )。所以在我看来,有什么东西被触发了,让视频重新开始。
如果我把它放在viewDidLoad上,那么系统就可以工作了,但是图形是混合和混乱的……
任何帮助都是真的,真的很感激,因为我现在花了两天的时间来做这件事,而不是弄得头晕目眩!
发布于 2011-06-28 23:11:14
添加
[moviePlayer stop] 在此之前
[moviePlayer.view removeFromSuperview]也许行得通。
更新:如果这不起作用,那么在删除controlstyle导致此类问题的subview.Most之前,尝试将controlStyle设置为MPMovieControlStyleNone。
发布于 2013-04-18 20:37:17
对于我来说,我尝试了所有这些:[moviePlayer stop]; [moviePlayer setContentURL:nil]; [moviePlayer.view removeFromSuperview]; moviePlayer = nil;
结果什么都没用。我想这是因为我的MPMoviePlayerController进入了全屏。解决方法?
[moviePlayer setFullscreen:NO animated:YES];https://stackoverflow.com/questions/6486018
复制相似问题