我正在将一些视频应用到我的 iPad 应用程序中,并且效果很好。但我遇到的问题是,当我离开 View 导航到其他地方时,视频音频会在后台继续播放。有没有办法在关闭 View 之前完全停止视频并将其从 View 中删除?
我试过:
[moviePlayerController 停止]; - 但这似乎并没有阻止电影它只是让应用程序崩溃。
[moviePlayerController.view removeFromSuperview]; - 从 View 中删除视频但不停止音频。
这是我的代码:
- (IBAction)PlayMediaButton:(id)sender
{
[moviePlayerController stop];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
NSString *movpath = [[NSBundle mainBundle] pathForResource:@"albert" ofType:@"mp4"];
MPMoviePlayerViewController* mpviewController = [[MPMoviePlayerViewController alloc]
initWithContentURL:[NSURL fileURLWithPath:movpath]];
if ([[NSFileManager defaultManager] fileExistsAtPath:movpath]) //Does file exist?
{
moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movpath]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackComplete:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayerController];
moviePlayerController.view.frame = CGRectMake(38, 37, 986, 618);
[self.view addSubview:moviePlayerController.view];
[moviePlayerController play];
if ([moviePlayerController respondsToSelector:@selector(setAllowsAirPlay:)]) //Allow airplay if availabe
[moviePlayerController setAllowsAirPlay:YES];
[moviePlayerController play];
}
}
- (void)moviePlaybackComplete:(NSNotification *)notification
{
MPMoviePlayerController *moviePlayerController = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayerController];
[moviePlayerController.view removeFromSuperview];
[moviePlayerController release];
}
最佳答案
如果我没听错,你应该在 -viewWillDisappear:
中停止电影播放器 Controller 。
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[moviePlayerController stop];
}
编辑 刚注意到您正在创建一个 MPMoviePlayerViewController
而不是 MPMoviePlayerController
。前者旨在以模态方式显示,因为它是 UIViewController
的子类。这解释了崩溃是因为 MPMoviePlayerViewController
没有响应 -stop
消息。因此,要么使用 -presentModalViewController:animated:
显示 moviePlayerController
,要么将其类型更改为 MPMoviePlayerController
并将其添加到您的 View 中,就像您现在所做的那样。
关于iphone - iOS 媒体框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579658/