0

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:

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

4

2 回答 2

1

我遇到了同样的问题并遇到了这篇文章。我发现除非在重播视频之前文件的 URL 发生更改,否则控件不会在点击时重新出现。为了解决这个问题,我简单地释放了以前的 MPMoviePlayerController 并分配并初始化一个新的。

将 MPMoviePlayerController 的文件 URL 更改为其他内容,然后返回视频也可能有效,但我尚未对此进行测试。

于 2012-11-01T05:02:07.767 回答
0

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

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

这似乎没有任何意义,但请放心,MPMoviePlayerController如果不这样做,它确实会触发错误。

于 2012-05-19T09:20:19.720 回答