WKWebView Content loaded function never get called

前端 未结 1 612
故里飘歌
故里飘歌 2020-12-15 03:21

i try to get a function called after my Content inside WKWebView is fully loaded. I found the \"didFinishNavigation\" function at the Apple Swift WKNavigation Documentation.

相关标签:
1条回答
  • 2020-12-15 03:44

    You are not setting the navigationDelegate. Set it and it should be fine.

    class ViewController: UIViewController, WKNavigationDelegate {
    
    
      override func viewDidLoad() {
        super.viewDidLoad()
    
        let noLayoutFormatOptions = NSLayoutFormatOptions(rawValue: 0)
    
        let webView = WKWebView(frame: CGRectZero, configuration: WKWebViewConfiguration())
        webView.setTranslatesAutoresizingMaskIntoConstraints(false)
        webView.navigationDelegate = self
        view.addSubview(webView)
    
        view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[webView]|", options: noLayoutFormatOptions, metrics: nil, views: ["webView": webView]))
    
        view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[webView]|", options: noLayoutFormatOptions, metrics: nil, views: ["webView": webView]))
    
        let url = NSURL(string: "http://google.com")
        let request = NSURLRequest(URL: url)
        webView.loadRequest(request)
      }
    
      func webView(webView: WKWebView!, didFinishNavigation navigation: WKNavigation!) {
        print("Finished navigating to url \(webView.url)");
      }
    
    }
    

    And here is a bit better version with Swift 3.

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let configuration = WKWebViewConfiguration()
            let webView = WKWebView(frame: .zero, configuration: configuration)
            webView.translatesAutoresizingMaskIntoConstraints = false
            webView.navigationDelegate = self
            view.addSubview(webView)
    
            [webView.topAnchor.constraint(equalTo: view.topAnchor),
             webView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
             webView.leftAnchor.constraint(equalTo: view.leftAnchor),
             webView.rightAnchor.constraint(equalTo: view.rightAnchor)].forEach  { anchor in
                anchor.isActive = true
            }
    
            if let url = URL(string: "https://google.com/search?q=westworld") {
                webView.load(URLRequest(url: url))
            }
        }
    
    }
    
      extension ViewController: WKNavigationDelegate {
    
        func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
            print("Finished navigating to url \(webView.url)")
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题