我正在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
答案 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