当检测URL时,Swift ShouldStartLoadWith不起作用

时间:2018-09-07 09:58:46

标签: swift uiwebview

我的应用程序包含“ 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
    }

1 个答案:

答案 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)
}
相关问题