使用UIWebView
时我想检测网页在iOS
应用中加载的时刻。
为此,我尝试使用this post中提到的解决方案。
但问题是 webViewDidFinishLoad()函数在页面出现在显示屏上之前被调用(几乎在调用 loadRequest()之后)解决方案无用。 我错过了什么吗?或者有更好(或不同)的方式吗?
P.S。我使用的是Xcode版本8.3.2和iOS版本10.3.2
答案 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")!)
}