【问题标题】:MPMoviePlayerController quirck? Can't tap its view when playing the video again after user exits with "Done"MPMoviePlayerController 怪癖?用户退出“完成”后再次播放视频时无法点击其视图
【发布时间】:2012-05-18 23:41:06
【问题描述】:

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:

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

【问题讨论】:

    标签: ios controls mpmovieplayercontroller


    【解决方案1】:

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

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

    【讨论】:

    • 我还应该提到,在运行 6.0 及更高版本的设备上使用 iOS 6.0 SDK 构建时,这个问题似乎得到了解决,但在运行 iOS 5 的设备上仍然存在问题,即使使用6.0 SDK(因为显然这些设备仍然具有内置的旧功能)。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-04
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多