【问题标题】:How do I stop a YouTube embedded video from playing without hitting pause in the web view?如何停止播放嵌入的 YouTube 视频而不在网页视图中点击暂停?
【发布时间】:2016-04-26 21:26:55
【问题描述】:

我在UIWebView 中嵌入了一个 YouTube 视频。它播放得很好。但是,当我在不暂停视频的情况下切换到不同的视图控制器时,它会继续播放音频。我该如何阻止它?

代码:

func loadYouTubeVideo() {

    let youTubeLink: String = "https://www.youtube.com/embed/ac_om5HCjvg"
    let width = 300
    let height = 200
    let frame = 50
    let html:NSString = "<iframe width=\(width) height=\(height) src=\(youTubeLink) frameborder=\(frame) allowfullscreen></iframe>"
    self.youTubeWebView.loadHTMLString(html as String, baseURL: nil)

}

我需要一个快速的答案。我尝试过使用 Objective-C,但除非我做错了,否则它不会翻译:

 let script = "var videos = document.querySelectorAll(\"video\"); for (var i = videos.length - 1; i >= 0; i--) { videos[i].pause(); };"
 youTubeWebView.stringByEvaluatingJavaScriptFromString(script)

【问题讨论】:

  • Stop video in UIWebView的可能重复
  • 不幸的是,这些答案对我不起作用。可能是它在 Objective-C 中,而我正在使用 Swift。
  • 你是什么意思他们不工作?你试过把它们翻译成 Swift 吗?

标签: ios swift youtube uiwebview youtube-api


【解决方案1】:

试试这个

  override func viewWillDisappear(animated: Bool) {
        webView.loadHTMLString(nil, baseURL: nil)
    }

让我知道它是否有效

【讨论】:

  • loadHTMLString 需要非可选字符串 HTML 字符串,不能传入 nil。
【解决方案2】:

如果您不关心用户在离开视图后从头开始恢复视频,请让 web 视图加载一个空白页面:

webView.loadHTMLString("<html><head></head><body></body></html>", baseURL: nil)

如果您这样做,您将不得不在viewWillAppear 中再次加载您的视频。

【讨论】:

    【解决方案3】:

    我使用以下方法停止了我的音频:

    webView.loadHTMLString("", baseURL: nil) 
    

    【讨论】:

      猜你喜欢
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 2017-05-14
      • 2018-08-23
      • 2013-03-03
      • 2018-12-05
      • 1970-01-01
      相关资源
      最近更新 更多