检测WKWebView完成加载

Mus*_*afa 7 swift wkwebview

请问我有一个问题,我怎么能检测到WKWebView完成加载所以我可以从中获取URL,例如webView委托方法?我实现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")
    }    
}
Run Code Online (Sandbox Code Playgroud)

但是当我从youtube完成加载视频时,上面的方法不会调用它

非常感谢你

May*_*nde 6

快速 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
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这种方法必须用于启动加载检测。最后:func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) (2认同)
  • 您使用的委托方法在 webView “开始”接收内容时调用,而不是在其完成加载时调用。要使用的正确委托方法是“webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)” (2认同)