MPMoviePlayerController怪起来?用户以“完成”退出后再次播放视频时无法点击其视图

时间:2012-05-18 23:41:07

标签: ios controls mpmovieplayercontroller

A类使用MPMoviePlayerController加载影片。我调用prepareToPlay并等待显示电影,直到我得到loadState = 3.如果我播放视频并让它结束然后再播放,一切正常。但是,如果我以“完成”结束视频,从而获得退出的MPMovieFinishReasonUserExited原因,并且我再次重播视频,我可以点击控件而不是视频屏幕。当控件消失时,由于视图没有响应,因此无法再次返回控件。这只发生在iOS 5.1中,而不是iOS 4.3(模拟器和实际设备)。有什么想法吗?

编辑:

我想出了一件事。我对MPMoviePlayerController视图的子视图进行了一些调试,我发现它第一次播放时我们有:

<MPSwipableView: 0x9b671f0; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x9b67290>>

而第二次玩之后,我们有:

<MPSwipableView: 0x9b671f0; frame = (0 0; 320 480); hidden = YES; autoresize = W+H; layer = <CALayer: 0x9b67290>>

为什么它会隐藏注册触摸的视图?这是一个错误吗?

编辑2:

不幸的是,上述观察结果似乎无关紧要。我手动将隐藏设置为NO,但仍然无法让它响应水龙头。当我重新加载电影时,没问题。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,发现了这篇文章。我发现,除非在重播视频之前文件的网址发生变化,否则控件将不会重新显示。为了解决这个问题,我只需发布以前的MPMoviePlayerController并分配并初始化一个新的。

将MPMoviePlayerController的文件URL更改为其他内容,然后返回视频也可能有效,但我没有测试过。

答案 1 :(得分:0)

一旦应用程序执行了多余的controlStyle更改,我就已经看到了这个问题。检查您的setup / teardown事件处理程序。 确保您只设置了尚未激活的controlStyle。

if (player.controlStyle != newControlStyle)
{
    player.controlStyle = newControlStyle;
}

这似乎毫无意义,但请放心,如果不这样做,它会触发MPMoviePlayerController错误。