BUG疑难杂症

WKWebView使用KVO监听contentSize的异常闪退

2018-08-01  本文已影响203人  猜火车丶

因为使用下面的方法会出现内容先加载出来,高度有延迟调整的情况,不符合要求

- (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"];
}
上一篇下一篇

猜你喜欢

热点阅读