美文网首页
kvo:message was received but not

kvo:message was received but not

作者: dbc94a66f502 | 来源:发表于2019-04-17 18:17 被阅读0次

问题描述

当一个网页还没加载完成的时候,点后退就直接闪退了,错误日志如下:

2019-04-17 18:12:14.517949+0800 xxx[92055:9513871] exception:<WKWebViewController: 0x7fc442d5a640>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
Key path: estimatedProgress
Observed object: <WKWebView: 0x7fc4438d0a00; frame = (0 0; 375 812); gestureRecognizers = <NSArray: 0x6000009036c0>; layer = <CALayer: 0x6000007d1d60>>
Change: {
    kind = 1;
}
Context: 0x0

解决方法

注释掉 [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];

//kvo 监听进度 必须实现此方法
-(void)observeValueForKeyPath:(NSString *)keyPath
                     ofObject:(id)object
                       change:(NSDictionary<NSKeyValueChangeKey,id> *)change
                      context:(void *)context{
    
    if ([keyPath isEqualToString:NSStringFromSelector(@selector(estimatedProgress))]
        && object == _webView) {
        
        NSLog(@"网页加载进度 = %f",_webView.estimatedProgress);
        self.progressView.progress = _webView.estimatedProgress;
        if (_webView.estimatedProgress >= 1.0f) {   
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                self.progressView.progress = 0;
            });
        }
        
    }else if([keyPath isEqualToString:@"title"]
             && object == _webView){
//        self.navigationItem.title = _webView.title;
    }else{
   //        [super observeValueForKeyPath:keyPath
//                             ofObject:object
//                               change:change
//                              context:context];
    }
}

相关文章

网友评论

      本文标题:kvo:message was received but not

      本文链接:https://www.haomeiwen.com/subject/kmfowqtx.html