WKWebview Observer - PullRequest
       17

WKWebview Observer

0 голосов
/ 06 мая 2020

Я пытаюсь добавить наблюдателя, когда мой WKWebview загружается / загружается, но он срабатывает только при загрузке. Он никогда не срабатывает "во время" загрузки. Что я делаю не так?

override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://google.com")!
        let request = URLRequest(url:url)
        self.webView.load(request)
        self.webView.addObserver(self, forKeyPath: #keyPath(WKWebView.isLoading), options: .new, context: nil)
    }

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "loading"{
            if webView.isLoading{
                print("loading")
            }
            else{
                print("done")
            }
        }
    }

1 Ответ

0 голосов
/ 06 мая 2020

Вы должны добавить наблюдение перед любые операции с веб-представлением, а путь ключа в KVO - это строка, например

override func viewDidLoad() {
        super.viewDidLoad()
        self.webView.addObserver(self, forKeyPath: "isLoading", 
                                 options: [.new], context: nil)

        let url = URL(string: "https://google.com")!
        let request = URLRequest(url:url)
        self.webView.load(request)
    }

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "isLoading"{
        if webView.isLoading{
            print("loading")
        }
        else{
            print("done")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...