【问题标题】:WKWebView didFinish is not working Swift 4WKWebView didFinish 不工作 Swift 4
【发布时间】:2018-03-26 04:44:05
【问题描述】:

我正在 WKWebView 中加载一个 url。

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

但是,委托函数,

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

加载完成后不触发。

然后我将 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 }
   }
}

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

【问题讨论】:

  • 请找到更新的答案

标签: ios swift webview wkwebview


【解决方案1】:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 

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

你做过吗?

class ViewController: UIViewController, WKNavigationDelegate {

}

如果你设置了上面的WKNavigationDelegate,你的代码会是这样的,

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

和委托方法,

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

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

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

更新

像这样在您的info.plist 中启用App Transport Security

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

【讨论】:

  • 是的,我的 webview 符合 WKNavigationDelegate 委托
  • 那它一定能用,你有没有像这个ViewController这样设置它:UIViewController,WKNavigationDelegate,请出示你的代码
  • 现在可以使用任何网址,例如 google.com 。但是,我正在尝试加载 ipaddress/video/mjpg.cgi 这不起作用
  • 请粘贴完整的网址
  • 这是一个mpeg视频网址
猜你喜欢
  • 2019-09-21
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-13
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
相关资源
最近更新 更多