宁国三叉子,鬼话钟馗官网,回味的近义词
前言
本文主要给大家介绍了关于ios wkwebviewjavascriptbridge xcode9中导致crash的相关解决办法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
wkwebviewjavascriptbridge 这个第三方还是比较不错的,但是最近xcode9上,却出现了crash;wkwebviewjavascriptbridge官方github看了大家也都有如此问题,最后终于解决了;
需要在wkwebviewjavascriptbridge类里,如下修改:
- (void)webview:(wkwebview *)webview decidepolicyfornavigationaction:(wknavigationaction *)navigationaction decisionhandler:(void (^)(wknavigationactionpolicy))decisionhandler { if (webview != _webview) { return; } nsurl *url = navigationaction.request.url; __strong typeof(_webviewdelegate) strongdelegate = _webviewdelegate; if ([_base iswebviewjavascriptbridgeurl:url]) { if ([_base isbridgeloadedurl:url]) { [_base injectjavascriptfile]; } else if ([_base isqueuemessageurl:url]) { [self wkflushmessagequeue]; } else { [_base logunkownmessage:url]; } decisionhandler(wknavigationactionpolicycancel); } else { /// 在这新添加了else if (strongdelegate && [strongdelegate respondstoselector:@selector(webview:decidepolicyfornavigationaction:decisionhandler:)]) { [_webviewdelegate webview:webview decidepolicyfornavigationaction:navigationaction decisionhandler:decisionhandler]; } else { decisionhandler(wknavigationactionpolicyallow); } } }
或这样修改
- (void)webview:(wkwebview *)webview decidepolicyfornavigationaction:(wknavigationaction *)navigationaction decisionhandler:(void (^)(wknavigationactionpolicy))decisionhandler { if (webview != _webview) { return; } nsurl *url = navigationaction.request.url; __strong typeof(_webviewdelegate) strongdelegate = _webviewdelegate; if ([_base iswebviewjavascriptbridgeurl:url]) { if ([_base isbridgeloadedurl:url]) { [_base injectjavascriptfile]; } else if ([_base isqueuemessageurl:url]) { [self wkflushmessagequeue]; } else { [_base logunkownmessage:url]; } decisionhandler(wknavigationactionpolicycancel); /// 在这新添加了return return; } if (strongdelegate && [strongdelegate respondstoselector:@selector(webview:decidepolicyfornavigationaction:decisionhandler:)]) { [_webviewdelegate webview:webview decidepolicyfornavigationaction:navigationaction decisionhandler:decisionhandler]; } else { decisionhandler(wknavigationactionpolicyallow); } }
我猜测主要原因是 xcode9上,decisionhandler()
这个block回调,不允许多次被调用;
总结
以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。
参考链接
1、 https://github.com/marcuswestin/webviewjavascriptbridge/issues/302
2、http://www.jianshu.com/p/909afcbc401e
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能
网友评论