呈现另一个视图控制器时,MPMoviePlayerPlaybackDidFinishNotification将触发

时间:2013-07-28 07:48:37

标签: ios video uiviewcontroller mpmovieplayercontroller

我创建了自己的从MPMoviePlayerViewController派生的MoviePlayerViewController,我使用标准的presentMoviePlayerViewController方法呈现它 - 一切正常。在电影播放器​​控制器的顶部,当用户单击某个按钮时(我暂停电影后),我会呈现另一个ShareThisMovie视图控制器。我使用presentViewController执行此操作。

我不知道为什么但是一旦新的VC出现,底层的MoviePlayerViewController立即触发MPMoviePlayerPlaybackDidFinishNotification,我通过解除整个VC层次结构来响应,因此用户没有机会与ShareThisMovie交互控制器。

即使我忽略了通知,仍然是电影播放器​​触发它的事实意味着一旦ShareThisMovie控制器关闭,电影就会从开始开始。这显然不是我想要的......

为什么MoviePlayerController会触发此事件?我如何确保它没有,或者我如何解决这个问题?我尝试在显示ShareThisVideo控制器之前存储最后一个播放位置,然后将其设置回来,但它仍然从头开始播放......

TNX

2 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为当您从MoviePlayerViewController移动到另一个视图控制器时,MPMoviePlayer会停止播放...所以您的MPMoviePlayerPlaybackDidFinishNotification委托正在调用。

当你在另一个ViewController上时,你无法继续播放MPMoviePlayer。

一个解决方案是提交ShareThisMovieviewcontroller,你可以简单地在同一个控制器的MPMoviePlayer上添加UIView进行共享。这将阻止MPMoviePlayer停止。

答案 1 :(得分:0)

不完全是答案而不是解决方法,但我最终改变了设计:而不是从MPMoviePlayerViewController派生,我从标准的UIViewController派生,并在其中嵌入了一个MPMoviePlayerController。出于某种原因,当我这样做时,当我在我的播放器视图控制器上呈现一些其他VC时,玩家没有提出didFinish事件......

现在猜测我的结论是不是从MPMoviePlayerViewController派生出一个VC ......