WKWebView didFinish无法正常工作Swift 4

Vin*_* TP 2 webview ios swift wkwebview

我正在WKWebView中加载一个URL。

let url = URL(string: "myURL")
let request = URLRequest(url: url!)
webView1.navigationDelegate = self as! WKNavigationDelegate
webView1.load(request)
Run Code Online (Sandbox Code Playgroud)

但是,委托函数

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    print("Finished navigating to url \(webView.url)")
}
Run Code Online (Sandbox Code Playgroud)

完成加载后不会触发。

然后我将KVO用于Web视图

webView1.addObserver(self, forKeyPath: "loading", options: .new, context: nil)

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
   if (keyPath == "loading") {
       guard var web1 = object as? WKWebView else { return }
   }
}
Run Code Online (Sandbox Code Playgroud)

加载正常。但是,observer加载后是否有任何可用的webview

PPL*_*PPL 6

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 
Run Code Online (Sandbox Code Playgroud)

如果设置navigationDelegate正确,必须调用。

你做完了吗?

class ViewController: UIViewController, WKNavigationDelegate {

}
Run Code Online (Sandbox Code Playgroud)

如果您设置以上内容WKNavigationDelegate,您的代码将如下所示,

let url = URL(string: "http://www.google.com")
let request = URLRequest(url: url!)
webView.navigationDelegate = self
webView.load(request)
Run Code Online (Sandbox Code Playgroud)

和委托方法,

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
     print("Finished navigating to url \(String(describing: webView.url))")
}
Run Code Online (Sandbox Code Playgroud)

希望对您有所帮助,如有任何疑问,请告知我。

仅供参考。无需设置外部观察者。

更新

使App Transport Security你info.plist这样的吗?

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)