【问题标题】:Playing videos in UIWebView broken in iOS4?在 iOS4 中损坏的 UIWebView 中播放视频?
【发布时间】:2011-03-01 07:28:35
【问题描述】:

我有一个自 SDK 2.0 版开始运行的应用程序,我在其中创建和添加 UIWebView,然后加载 .mov 的 URL 以播放电影。从 4.0 beta 的早期版本到 4.0 GM,这已经停止工作。当我现在加载电影时,出现以下错误::插件处理加载”并且电影永远不会显示。

这是一个已知问题吗?我在 4.0 中做错了吗?

【问题讨论】:

  • 致遇到此问题的任何人:这是一个破坏现有应用程序的未记录错误。下面有一个简单的解决方法,但也请file a bug report 以增加 Apple 修复它的可能性。

标签: iphone uiwebview movie


【解决方案1】:

我想通了。这似乎是 iOS4 不向后兼容使用“init”而不是“initWithFrame”创建的 UIWebView 的问题。在 2.0 - 3.1.3 中,您只能在 UIWebview 中将视频显示为全屏。我认为这就是为什么调用“init”并不重要——电影播放器​​会启动并全屏显示。但是,在 3.2 及更高版本中,您现在可以在 UIWebView 中内联视频,因此您必须调用 initWithFrame 并为其提供类似 [[UIScreen mainScreen] bounds] 的内容,以便有一个可见的视图。不太确定这是否是牛市,但似乎是这样。

【讨论】:

  • 更准确地说,视频只有在 UIWebView 的帧具有非零区域时才会播放。我对使用[[UIWebView alloc] initWithFrame:CGRectZero] 创建的 UIWebView 有同样的问题。这特别奇怪,因为 webview 实际上并不需要可见。即使 webView 从未添加到视图层次结构中,视频也会播放,只要它的帧不为零。
  • 这是正确的。即使您调用 [[UIWebView allow] initWithFrame:CGRectMake(0,0,1,1)] 视频也会正常显示,当您单击“完成”时,UIWebView 将“出现”被解雇。否则,我不确定是否有办法检测视频是否已完成,以便您可以隐藏/删除 UIWebView。否则,你会看到一个白色的 UIWebView,中间有一个播放图标。
  • 我以为我是唯一有这个问题的人。但即使有这种解决方法,它对我也不起作用。我已经在做 initWithFrame 但我在 3.2 和之前的版本中得到了一个 alertView “无法播放这部电影”,它运行良好。只有4.0没有
【解决方案2】:

播放视频剪辑时出现“无法播放此电影”的情况。 这发生在刚使用录音机时。当播放器刚被使用时,这不会发生。

然后我在录音机完成后将音频会话类别设置为 kAudioSessionCategory_AmbientSound。

我这样做后这个问题就解决了。

【讨论】:

    【解决方案3】:

    只是忽略它。这样做没有害处。

    if (![error.localizedDescription isEqualToString:@"Plug-in handled load"])
    

    【讨论】:

      【解决方案4】:

      至少在PhoneGap 的ChildBrowser 中,didFailLoadWithError 方法会处理并显示此消息。只需不显示错误,问题就解决了,但在这种特定情况下,在您返回应用程序之前,有两个“完成”按钮可供按下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 2012-10-27
        • 2012-04-17
        • 1970-01-01
        • 2012-09-15
        • 2016-03-29
        • 1970-01-01
        相关资源
        最近更新 更多