0

我正在通过以下方式播放电影:

moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:asset.filepath]];

//[[vc moviePlayer] prepareToPlay];
[self presentViewController:moviePlayer animated:YES completion:NULL];

控制器出现,但随后立即自行消失。我究竟做错了什么?谢谢!

4

4 回答 4

2

你必须删除MPMoviePlayerPlaybackDidFinishNotification NSNotificationCenter像: -

moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:asset.filepath]];

//[[vc moviePlayer] prepareToPlay];
[[NSNotificationCenter defaultCenter] removeObserver:moviePlayer  name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer.moviePlayer];
[self presentViewController:moviePlayer animated:YES completion:NULL];

因为在创建时会MPMoviePlayerViewController自动将自己注册到NSNotificationCenter。您必须先删除此注册,它会自动停止自行关闭。希望它可以帮助你

请检查波纹管链接:-

http://josebolanos.wordpress.com/2011/09/28/dismissing-mpmovieplayerviewcontroller-the-right-way/

于 2013-05-27T08:26:26.760 回答
1

在尝试播放音频时遇到了类似的问题。尝试将您的电影播放器​​设置为具有强引用的属性。

于 2013-05-27T11:09:53.307 回答
0

检查你的-(void)viewWillDisappear:(BOOL)animated{方法,如果你是dismissing你的,moviePlayer那么这就是原因。

于 2013-05-27T08:24:26.593 回答
0

从文档:

" 要以模态方式呈现电影播放器​​视图控制器,您通常使用该presentMoviePlayerViewControllerAnimated:方法。该方法是类上的类别的一部分,UIViewController由 Media Player 框架实现。该presentMoviePlayerViewControllerAnimated:方法使用标准过渡动画呈现电影播放器​​视图控制器。视频内容。要关闭模态呈现的电影播放器​​视图控制器,请调用该dismissMoviePlayerViewControllerAnimated 方法。

您不能使用正常的模态演示方法。必须使用UIViewContoller类别中媒体播放器框架提供的方法。

于 2013-05-27T10:03:27.757 回答