UIWebView FinishLoad / Detection问题

时间:2017-05-25 02:16:49

标签: ios swift uiwebview uiwebviewdelegate

使用UIWebView时我想检测网页在iOS应用中加载的时刻。 为此,我尝试使用this post中提到的解决方案。

但问题是 webViewDidFinishLoad()函数在页面出现在显示屏上之前被调用(几乎在调用 loadRequest()之后)解决方案无用。 我错过了什么吗?或者有更好(或不同)的方式吗?

P.S。我使用的是Xcode版本8.3.2和iOS版本10.3.2

1 个答案:

答案 0 :(得分:0)

加载HTMLView内容的每一页webViewDidFinishLoad都会调用...所以我把三种类型的验证。使用哪一个更适合你。

var webViewPages = 0

func webViewDidStartLoad(_ webView: UIWebView) {
    webViewPages += 1
}

func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
    webViewPages -= 1
}

func webViewDidFinishLoad(_ webView: UIWebView) {

    if (webView.isLoading){
        return
    }

    if webView.stringByEvaluatingJavaScript(from: "document.readyState") != "complete"{
        return
    }

    webViewPages -= 1

    if webViewPages > 0{
        return
    }
    // Calculating webview height
    let height = Int(webView.stringByEvaluatingJavaScript(from: "document.body.scrollHeight")!)

}