我的应用程序包含“ Webview显示付款表格”,当我们填写完数据后,我们可以按“完成”按钮,然后Webview将重定向到其他网址。我已经搜索了此函数,并且发现了shouldStartLoadWith函数来解决此问题,但是当我实现此功能时,它不起作用
这是我的代码:
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if request.url?.absoluteString == "https://xyzbank.com" {
print("SUCCESS")
return false
}
print("NOT SUCCESS")
return true
}
这两个都不打印。
这是我其余的代码:我认为我已经调用了webview的委托方法,但仍然无法正常工作
override func viewDidLoad() {
super.viewDidLoad()
hud.textLabel.text = "Processing..."
hud.show(in: self.view)
let mpayment: Payment = params.payment
mywebview.navigationDelegate = self
//Showing webview url....
}
func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
print(error.localizedDescription)
}
func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print("Start to load")
}
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
print("DID FINISH NAVIGATION")
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
self.hud.textLabel.text = "Success"
self.hud.detailTextLabel.text = nil
self.hud.dismiss(animated: true)
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if request.url?.absoluteString == "https://payway.ababank.com" {
print("SUCCESS")
return false
}
print("NOT SUCCESS")
return true
}
答案 0 :(得分:3)
实际上,正如我所见,您的Web视图正在使用较新版本的WKWebview,但应该对UiWebview使用shouldStartLoadWith函数,对于WkWebview,我们应与DecisionHandler函数一起使用。 代码应如下所示:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping ((WKNavigationActionPolicy) -> Void)) {
print("webView:\(webView) decidePolicyForNavigationAction:\(navigationAction) decisionHandler:\(decisionHandler)")
if let url = navigationAction.request.url {
print(url.absoluteString)
if url.absoluteString.hasPrefix("https://payway-dev.ababank.com"){
print("SUCCESS")
}
}
decisionHandler(.allow)
}