问题描述
当一个网页还没加载完成的时候,点后退就直接闪退了,错误日志如下:
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];
}
}
网友评论