需求:项目中添加展示了H5页面,需要根据页面地址判断展示或隐藏原生按钮
个人习惯使用UIWebView,对于这种情况的常规操作是使用代理-(BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(nonnull NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType
但是!!!
木有走断点啊,这就很头疼了
经过查看网络状况及数据线是否断连情况都没有发生的情况下,皱了会眉,叹了口气,将UIWebView更换至WKWebView
同样添加代理- (void)webView:(WKWebView )webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
呵呵,依然没走断点,H5链接放到浏览器查看,在点击内部按钮时,页面确实发生了变化。。。无奈,只能寻求广大网友的帮助了,大部分指导与我上边的操作一样,可我不是想知道方法里边怎么写,我是想知道它为什么不走那方法啊
直到组长大大询问完成情况,发现我依然在这个坑里没出去的时候。。。嗯,我觉着可能对我很无语,,然后给我发了一堆她查到的链接,我一篇一篇的过,,终于在倒数第二的链接上找到了解决办法
对WKWebView添加事件监听,注意,是WKWebView,,UIWebView我试过了,加监听也不好使
具体为:
[_wkWebView addObserver:self forKeyPath:@"URL" options:NSKeyValueObservingOptionNew context:nil];
- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context {
if([keyPathisEqualToString:@"URL"]) {
NSString* url = [NSStringstringWithFormat:@"%@", change[@"new"]];
//根据url判断按钮的显示和隐藏
}
}
另外学到一招,如果想添加H5加载进度条的话,可以使用同样的监听方法,监听事件为‘estimatedProgress’
最后,一定要记得取消监听
- (void)dealloc {
[_wkWebView removeObserver:self forKeyPath:@"URL"];
}
附加帮助解决问题的文档链接:https://blog.csdn.net/jia12216/article/details/80527509
网友评论