Индикатор активности не прекращает вращаться после завершения загрузки WKWebView - PullRequest
0 голосов
/ 20 февраля 2019

Я очень новичок в разработке Swift и iOS, поэтому большое спасибо заранее за помощь!

Я попробовал каждый пример в Интернете и каждую страницу на этом сайте, и я не могу остановить индикатор активности.отображается после завершения загрузки страницы в моем WKWebview.

Любая помощь будет так цениться!Спасибо!

import UIKit
import WebKit

class FirstViewController: UIViewController,     WKUIDelegate, WKNavigationDelegate {

@IBOutlet var webView: WKWebView!

@IBOutlet var activityIndicator: UIActivityIndicatorView!

override func viewDidLoad() {
    super.viewDidLoad()

    webView.uiDelegate = self

    activityIndicator.startAnimating()
    activityIndicator.isHidden = true
    activityIndicator.hidesWhenStopped = true

    let url = Bundle.main.url(forResource: "Web/bulk_material_table", withExtension: "html")!
    webView.loadFileURL(url, allowingReadAccessTo: url)
    let request = URLRequest(url: url)
    self.webView.load(request)


}

func showActivityIndicator(show: Bool) {
    if show {
        activityIndicator.startAnimating()
    } else {
        activityIndicator.stopAnimating()
    }
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    showActivityIndicator(show: false)
}

func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
    showActivityIndicator(show: true)
}

func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
    showActivityIndicator(show: false)
}
}

1 Ответ

0 голосов
/ 20 февраля 2019

Просто замените

webView.uiDelegate = self

на

webView.navigationDelegate = self

И это будет работать, потому что

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    showActivityIndicator(show: false)
}

- это метод делегата WKNavigationDelegate.

...