【问题标题】:Detect when WKWebView is finished loading检测 WKWebView 何时完成加载
【发布时间】:2017-03-14 21:38:55
【问题描述】:

如何检测我的WKWebView 何时完成加载,以便我可以从中获取 URL,例如使用委托方法?

我为WKWebView 实现了委托方法,但我无法检测到它何时完成加载视频。

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let preference = WKPreferences()
        preference.javaScriptEnabled = true
        let configuration = WKWebViewConfiguration()
        configuration.preferences = preference
        webView = WKWebView(frame: view.bounds, configuration: configuration)
        view.addSubview(webView)

        webView.uiDelegate = self
        webView.navigationDelegate = self
        webView.load(URLRequest(url: URL(string: "http://www.youtube.com")!))
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("finish loading video")
    }    
}

但是当它完成从 YouTube 加载视频时,并没有调用上面的方法。

非常感谢。

【问题讨论】:

标签: swift wkwebview


【解决方案1】:

SWIFT 4:

使用以下 WKNavigationDelegate 的委托方法。您可以在哪里检查是否已完成加载?在这里您可以在 webView 中加载 URL。

func webView(_ webView: WKWebView, didFinish  navigation: WKNavigation!) 
{
    let url = webView.url?.absoluteString
    print("---Hitted URL--->\(url!)") // here you are getting URL
}

【讨论】:

  • 我认为这个方法必须用于开始加载检测。最后:func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
  • 您使用的委托方法在 webView“开始”接收内容时调用,而不是在其完成加载时调用。正确使用的委托方法是“webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多