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

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

- (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"];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,023评论 3 119
  • 导语 WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit...
    yahoouchen阅读 4,150评论 8 17
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,681评论 8 265
  • 大家都在等,等到平凡的人变努力,努力的人变优秀,才会倾尽所有去争取对方的爱,也许我们认为对等的爱情在别人看来极...
    认识你的我阅读 273评论 0 0
  • 有时走过街前,会看一看路的远方,是否那看不见的尽头,也有人在这样张望。
    furx阅读 401评论 2 1