WKWebView-不从Web视图加载页面

时间:2019-05-08 13:26:55

标签: ios wkwebview

我正在WKWebView中显示一个网页。它加载成功。在页面上,有3个按钮-X,Y,Z。轻按X和Y时,web view会根据需要更改内容。当点击Z时,什么也不会发生。我在Safari Mobile中尝试了相同的链接。 X和Y与WKWebView中的工作方式相同。 Z重定向到另一个页面。最后一个没有在应用程序中发生。有什么事吗先感谢您。

要加载我正在使用的显示页面:

if let url = URL(string: <My_URL>) {
    let request = URLRequest(url: url)
     wkWebView.load(request)
}

NSAllowsArbitraryLoads设置为true

2 个答案:

答案 0 :(得分:0)

您是否实现了WKNavigationDelegate方法?

点击Z按钮时,应调用此方法(否则,您的WEB代码或WKWebView配置中的某些内容可能是错误的)

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    decisionHandler(.allow)
}

如果一切正确,您可以调查其中的一些问题

func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error)

func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error)

答案 1 :(得分:0)

您需要此实现WKUIDelegate方法-

    webView.uiDelegate = self   // set this before loading the original url, e.g. in viewDidLoad() of vc

然后在您的视图控制器中添加此方法-

    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
       // Ideally you should create another WKWebView on the fly and provide that web view instance in return statement
       // WebKit automatically loads the target url in this webview.
       return webView
    }

来源:https://developer.apple.com/documentation/webkit/wkuidelegate