检测WKWebView何时完成加载

12

我如何检测我的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加载视频完成时并不被调用。 非常感谢您。

尝试这个解决方案:https://dev59.com/5WAg5IYBdhLWcg3wBXER#40730365 - Vasily Bodnarchuk
1个回答

8

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
}

3
我认为这个方法必须用于开始加载检测。而对于结束:func webView(_webView:WKWebView,didFinish navigation:WKNavigation!) - DmitryKanunnikoff
3
您所使用的委托方法是在webView“开始”接收内容时调用的,而不是在其完成加载时调用的。正确的委托方法是“webView(_ webView:WKWebView,didFinish navigation:WKNavigation!)”。 - SilentK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接