我们在做需求的时候,肯定避免不了跳转H5页面,多个页面需要获取web页面的标题title,这就牵扯出来两种方法:
1.我们常用的方法:WKWebView的代理方法:
//执行JS方法获取导航栏标题
[webView evaluateJavaScript:@"document.title" completionHandler:^(id _Nullable title, NSError * _Nullable error) {
if (ValidStr(title)) {
self.navigationItem.title = title;
} else {
self.navigationItem.title = @"";
}
}];
这种方法是最常用的,只要遵循代理就能实现。一般都可以获取到
2.在第一种方法获取不到title的时候,我们就暴力一点直接加KVO监听方法,用来获取webView的title,代码如下:
// 添加进度监听
[_wkWebView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL];
#pragma mark KVO 实现方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if ([keyPath isEqualToString:@"title"]) {
if (object == self.wkWebView) {
self.navigationItem.title = self.wkWebView.title;
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
}
谢谢
网友评论