【问题标题】:After deiniting webView, video embedded in the webView is still playing - iOS取消 webView 后,嵌入在 webView 中的视频仍在播放 - iOS
【发布时间】:2016-05-30 08:39:12
【问题描述】:

我的ViewController 有一个WKWebView,它在视频中嵌入了 JavaScript。 当我弹出视图控制器时,deinit 被调用。在deinit 中,我取消了与webView 相关的所有内容。

但是,在弹出视图控制器后,视频中的音频仍在播放。我错过了什么?

deinit
{
    webView.removeObserver(self, forKeyPath: "estimatedProgress")
    webView.navigationDelegate = nil
    webView.scrollView.delegate = nil
    webView.removeFromSuperview()
    webView = nil
}

【问题讨论】:

  • 尝试使用 webView.delegate = nil
  • 另外,确保deinit 确实被调用了。我知道这听起来可能很愚蠢,但以前发生在我身上:)
  • @ReshmiMajumder WKWebView 没有委托
  • @konrad.bajtyngier 它被称为
  • 你能停止来自JS的视频吗?如果是这样,请在删除 WKWebViewusing this library 之前向您的脚本发送一条消息。

标签: ios swift video webview wkwebview


【解决方案1】:

这是解决问题的方法:

override func viewWillDisappear(animated: Bool)
{
    super.viewWillDisappear(animated)

    webView.removeFromSuperview()
}

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    self.view.addSubview(webView)
}

【讨论】:

  • 由于保留周期(在 UIBarButtonItem 的处理程序块中保留 self),我遇到了类似的问题 - 视图不会自动保留其子视图,因此我认为 removeFromSuperview() 调用是一种解决方法这里没有解决根本原因。只是为可能有这个想法的未来读者发布这个
【解决方案2】:

我确信这是因为 webView 的一些循环保留。尝试在“deinit”中将空数据设置为 webview。这可能会解决您的问题,但您必须修复 webview 的循环保留。

webView.loadRequest(NSURLRequest(URL: NSURL(string: "about:blank")))

【讨论】:

  • 其他东西解决了我的问题,但我会给你 100 分,因为我发现我有一个保留周期
  • 我遇到了同样的问题,没有运气也尝试过 Arun 的回答
猜你喜欢
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 2011-11-01
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多