Показать SVProgressHUD, пока загружается UIWebView - PullRequest
0 голосов
/ 19 декабря 2018

У меня UIWebView установлено как представление в ViewController.Я хотел бы отобразить индикатор активности SVProgressHUD во время загрузки веб-страницы, а затем закрыть его после его завершения, но я не могу заставить его работать.Веб-страница загружается нормально, но индикатор никогда не отображается.Я знаю, что SVProgressHUD настроен правильно и функционирует, но не в тех функциях, которые у меня есть.

Я полагаю, потому что у меня нет UIWebView на самом деле в сцене в IB, а скорее ViewController устанавливает представление на UIWebView, код, который я использую, не может нацеливаться на него.Пожалуйста, поправьте меня, если я ошибаюсь.

Это мой код:

import UIKit
import SVProgressHUD

class ViewController: UIViewController, UIWebViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()



        if let url = URL(string: "https://www.google.com") {
            let webView = UIWebView(frame: self.view.frame)
            let urlRequest = URLRequest(url: url)
            webView.loadRequest(urlRequest as URLRequest)
            webView.scalesPageToFit = true;
            webView.scrollView.showsHorizontalScrollIndicator = false;
            webView.scrollView.showsVerticalScrollIndicator = false;
            self.view.addSubview(webView)


        }
    }

    func webViewDidStartLoad(_ webView: UIWebView) {
        SVProgressHUD.show()
    }
    func webViewDidFinishLoad(_ webView: UIWebView) {
        SVProgressHUD.dismiss()
    }
    func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
        SVProgressHUD.dismiss()
    }
}

Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

UIWebView is устарело , используйте WKWebView

import UIKit
import WebKit
import SVProgressHUD

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        if let url = URL(string: "https://www.google.com") {
            let webView = WKWebView(frame: self.view.frame)
            webView.navigationDelegate = self
            self.view.addSubview(webView)
            webView.load(URLRequest(url: url))
            SVProgressHUD.show()
        }
    }
}

extension ViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
        print(error.localizedDescription)
        SVProgressHUD.dismiss()
    }

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        print("Strat to load")
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("finish to load")
        SVProgressHUD.dismiss()
    }
}
0 голосов
/ 19 декабря 2018

Вы забыли связать делегатов, поэтому добавьте эту строку ниже

webview.delegate = self

Примечание

UIWebView устарело, поэтому используйте WKWebView

...