#pragma mark - observer
- (void)addWebViewObserver {
[self.wkWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
}
- (void)removeWebViewObserver {
[self.wkWebView.scrollView removeObserver:self forKeyPath:@"contentSize"];
}
#pragma mark ------ < KVO > ------
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
/** 防止滚动一直刷新,出现闪屏 */
if ([keyPath isEqualToString:@"contentSize"]) {
CGRect webFrame = self.wkWebView.frame;
//webFrame.size.height为h5页面的实际高度
webFrame.size.height = self.wkWebView.scrollView.contentSize.height;
self.wkWebView.frame = webFrame;
}
}
- (void)dealloc
{
[self removeWebViewObserver];
}
用法:在需要监听的地方调用 addWebViewObserver 方法
可以根据自己的需求灵活运用该方法