Прокрутка до конца WKWebView программно не работает - PullRequest
0 голосов
/ 18 февраля 2020

У меня был какой-то устаревший код, который нужно немного изменить, чтобы он соответствовал стандартам Apple, фактически, чтобы избежать использования UIWebView и изменить его на WKWebView, чтобы иметь возможность регулярно выпускать приложение.

Код в этом Унаследованная часть, которая была посвящена прокрутке страницы до конца после загрузки, выглядела так, и это было абсолютно функционально:

    public func webViewDidFinishLoad(_ webView: UIWebView) {
        var scrollHeight: CGFloat = webView.scrollView.contentSize.height - webView.bounds.size.height
        if 0.0 > scrollHeight {
            scrollHeight = 0.0
        }
        webView.scrollView.setContentOffset(CGPoint.init(x: 0.0, y: scrollHeight), animated: true)
    }

И так как мне пришлось избавиться от компонентов UIWebView из приложения, я скорректировал код следующим образом. Добавлен импорт WebKit, приведите мой класс в соответствие с протоколом WKNavigationDelegate и установите делегат следующим образом: webView.navigationDelegate = self и реализовали соответствующую функцию следующим образом:

public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    var scrollHeight: CGFloat = webView.scrollView.contentSize.height - webView.bounds.size.height
    if 0.0 > scrollHeight {
        scrollHeight = 0.0
    }
    webView.scrollView.setContentOffset(CGPoint.init(x: 0.0, y: scrollHeight), animated: true)
}

Сейчас я не понимаю, где я делаю ошибку когда WKWebView отказывается прокручивать страницу вниз?

1 Ответ

0 голосов
/ 19 февраля 2020

Нашел решение, удалил код, который я использовал, и переключил его на следующий:

    public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
          webView.evaluateJavaScript("var scrollingElement = (document.scrollingElement || document.body); scrollingElement.scrollTop = scrollingElement.scrollHeight;")
}
...