TableView嵌套WKWebview出现的奇怪坑人bug

前要 我在使用UITableView嵌套WKWebView的行程那种网页带列表的新闻浏览的形式,我使用的就是UITaleView的tableHeaderView使用WKwebview来代替,本身WKwebview就是继承UIview,这个就涉及到计算WKwebView的内容的高度了,我起初在- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation这个方法中计算WKWebView的内容的高度(使用js与oc交互调用,不会自行百度),发现这里计算的高度根本不对,只能尝试延迟获取WKWebView的高度,但是发现延迟获取,wekView的高度太大话还是获取的不对,幸亏还有KVO这种东西,可以监听webView.scrollViewcontentSize的变化,这样就可以很容易的获取高度,最后发现contentSize的的监听方法执行了多次,说明wkWebView的内容变化多次,但是在

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;

这个方法中不管几次,最后执行刷新这个布局就可以了呀。
问题以及问题解决
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{if ([keyPath isEqualToString:@"contentSize"]) {CGSize new_size = [[change objectForKey:@"new"] CGSizeValue]; _web_view.height = new_size.height; _tableviewHeadview.height = new_size.height; _detaiTableView.tableHeaderView.height = new_size.height; [_detaiTableView reloadData]; } }

【TableView嵌套WKWebview出现的奇怪坑人bug】这个方法可以监听WKWebView.ScrollView的变化,在iOS10以下会有问题,整个界面会被WKwebView覆盖,并且还不能滑动,但是在iOS10(包括iOS10)以上就可以这样,正常刷新整个TableView界面,这个问题还是我同事的iOS9.8的系统手机发现,目前解决的方法就是把这里的_detaiTableView.tableHeaderView.height = new_size.height; 换成_detaiTableView.tableHeaderView = _tableviewHeadview重新赋值一下头部HeadView一次,不去改变高度,这个问题很坑爹,就是在此记录一下。

    推荐阅读