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,但仍然无法让它响应水龙头。当我重新加载电影时,没问题。
答案 0 :(得分:1)
我遇到了同样的问题,发现了这篇文章。我发现,除非在重播视频之前文件的网址发生变化,否则控件将不会重新显示。为了解决这个问题,我只需发布以前的MPMoviePlayerController并分配并初始化一个新的。
将MPMoviePlayerController的文件URL更改为其他内容,然后返回视频也可能有效,但我没有测试过。
答案 1 :(得分:0)
一旦应用程序执行了多余的controlStyle
更改,我就已经看到了这个问题。检查您的setup / teardown事件处理程序。
确保您只设置了尚未激活的controlStyle。
if (player.controlStyle != newControlStyle)
{
player.controlStyle = newControlStyle;
}
这似乎毫无意义,但请放心,如果不这样做,它会触发MPMoviePlayerController
错误。