因为使用下面的方法会出现内容先加载出来,高度有延迟调整的情况,不符合要求
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;
所以采用了KVO去监听WKWebView的scrollView的contentSize属性,来改变WKWebView的高度,但是加载中会出现异常闪退的情况,并且页面会出现异常高度计算,出现非常长的留白,后来在判断后面增加了_wkWebView.loading
,目前计算及闪退的异常都没有出现。
于是在此做一个简单的记录,也想吐槽下网上大部分互相抄来抄去的博客真的很耽误事啊。
[self.wkWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:@"WebKitContext"];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"contentSize"] && _wkWebView.loading) {
[_wkWebView evaluateJavaScript:SF(@"document.documentElement.offsetHeight") completionHandler:^(id _Nullable result, NSError * _Nullable error) {
//操作
}];
}
}
- (void)dealloc{
[self.wkWebView.scrollView removeObserver:self forKeyPath:@"contentSize" context:@"WebKitContext"];
}