我们要获取webView内容页的总高度,而因为可能网速,图片这些原因,他每次的contentsize是实时变化的,所以我们通过 KVO 监听 WKWebView 的 scrollView 的 contentSize,这样每当页面内容发生改变时,我们都能获取到最新的页面高度:
//注册监听
- (void)addObserverForWebViewContentSize{
[self.webss.scrollView addObserver:self forKeyPath:@"contentSize" options:0 context:nil];
}
//移除监听
- (void)removeObserverForWebViewContentSize{
[self.webss.scrollView removeObserver:self forKeyPath:@"contentSize"];
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
if ([keyPath isEqualToString:@"contentSize"]) {
//获取新高度
CGFloat newHeight = _wkwebview.scrollView.contentSize.height;
//比较存储高度和新高度
if (_webViewHeight<newHeight) {
_webViewHeight = newHeight;
//获取最新高度,然后做对应处理
......
}
}
}
PS:设置webview滚动属性为NO,这样通知的时候肯定会获取正确的高度
_wkwebview.scrollView.scrollEnabled = NO;
网友评论