Использование scrollIntoVIew в WKWebView позволяет перейти к началу страницы - PullRequest
0 голосов
/ 26 июня 2019

С помощью приведенного ниже кода я пытаюсь загрузить HTML в WKWebview, а затем прокрутить его до определенного элемента.

  let url = Bundle.main.url(forResource: "TestHTML", withExtension: "html")!
    myWebView.loadFileURL(url, allowingReadAccessTo: url)
    myWebView.evaluateJavaScript("document.getElementById('4').scrollIntoView(true);") {[weak self] (result, error) in
        print("result: \(result)")
        print (error)
    }

Однако, когда я его запускаю, страница загружается, прокручивается дораздел, но затем возвращается к началу страницы.

Я также попытался установить contentOffset для scrollView, что привело к точно такой же проблеме

1 Ответ

0 голосов
/ 26 июня 2019

Вы должны написать свой код оценки javascript в методе делегата веб-просмотра didFinish navigation

extension WebViewController: WKNavigationDelegate {

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("Finished navigating to url \(webView.url)")
        webView.evaluateJavaScript("document.getElementById('4').scrollIntoView(true);") { (any, error) in
            dump(error)
            print(any)
        }
    }
}

и не забудьте установить delgate веб-просмотра

myWebView.navigationDelegate = self
...