对于iOS中的UIWebview
和WKWebview
,委托方法:
webViewDidFinishLoad:(UIWebView *)webView
和
(void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation
当所有资源成功加载时调用,但是,在调用这些方法之前,内容已显示几秒钟。
现在,我想观察内容在Webview上显示的时间,任何有好主意的人请告诉我,谢谢。
答案 0 :(得分:1)
您必须使用WKWebView来跟踪加载进度。
首先,你必须添加观察者来听取进展。
[self.webView addObserver:self forKeyPath:@"loading" options:NSKeyValueObservingOptionNew context:nil];
[self.webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];
然后当网页开始加载时,您将使用此方法处理:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if ([keyPath isEqualToString:@"loading"]) {
if (!self.webView.isLoading) {
// Finished loading.
}
}
else if ([keyPath isEqualToString:@"estimatedProgress"]){
float progress = _webView.estimatedProgress; // Do whatever you want with the progress
}
}
此外,当Web视图开始加载内容时,将调用此委托方法:
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation{
// The web starts loading contents.
}
答案 1 :(得分:-1)
Webview确实在加载整个网站时调用了加载。
您的网站必须在加载html后加载一些javascript和css脚本。
因此,当javascript仍在加载时,会显示网站。
因此,一旦加载了所有内容,整个网站就会被加载。
理想的解决方案是向用户展示。进步。