Swift ShouldStartLoad не работает при обнаружении URL - PullRequest
0 голосов
/ 07 сентября 2018

Мое приложение содержит форму веб-просмотра для показа платежа, и после заполнения данных мы можем нажать кнопку «Готово», после чего веб-просмотр перенаправится на другой URL-адрес. Я уже искал эту функцию, и я нашел функцию 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 голосов
/ 26 сентября 2018

На самом деле, как я увидел, ваше веб-представление использует более новую версию WKWebview, но вместо этого для UiWebview используется функция shouldStartLoadWith, а для WkWebview мы должны использовать с решением SolutionHandler. Код должен выглядеть следующим образом:

 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...