Определить, когда WebView заканчивает загрузку в Swift4? - PullRequest
0 голосов
/ 05 июля 2018

Я хочу отображать прогресс во время загрузки WebView и отклонять его, когда WebView заканчивает загрузку. Я попробовал этот код:

import UIKit
import WebKit
import SVProgressHUD
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var WebView1: WKWebView!
@IBOutlet var WebView2: WKWebView!


let YouTubeURL = URL (string: "https://www.youtube.com/")


@IBAction func YTButtonAction(_ sender: Any) {

    let YTRequest = URLRequest(url: YouTubeURL!)
    WebView1.load(YTRequest)
    if WebView1.isLoading {
        SVProgressHUD.show()
    }
    func webViewDidFinishLoad(WebView1 : UIWebView) {

        SVProgressHUD.dismiss()

    }


}
}

Но это не работает. Прогресс продолжает вращаться. Кто-нибудь знает, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Ответ: Я изменил

  1. UIWebViewDelegate до WKNavigationDelegate

  2. WebView1.delegate = self до WebView1. navigationDelegate = self Имя свойства WKWebView: navigationDelegat

  3. func webViewDidFinishLoad (WebView1: UIWebView) до func webView (_ webView: WKWebView, didFinish навигация: WKNavigation!)

0 голосов
/ 05 июля 2018

Три фатальных вопроса:

  • Вы должны установить делегата

    WebView1.delegate = self
    
  • Неверная подпись метода делегата

    func webViewDidFinishLoad(_ webView: UIWebView)
    
  • Метод делегата должен находиться на верхнем уровне класса.

Я думаю, что есть четвертая фатальная проблема: я сомневаюсь, что WKWebView соответствует UIWebViewDelegate вообще. Я полагаю, вы должны принять WKNavigationDelegate и внедрить webView(:didFinish:).

И, пожалуйста, соблюдайте соглашение об именах Swift, согласно которому имена переменных и функций / методов начинаются со строчной буквы.

...