UIWebView使用[ JSValue callWithArguments:] UI 卡死问题

最近一直在搞一个套壳的app,作为临时方案,并且为了能够使交互与安卓端统一,用的UIWebView,体验就不要说了,卡出翔。
在使用UIWebView的时候出现了这样一个问题,当使用[ JSValue callWithArguments:]方法时,如果调用的js方法有alert,就会导致UI卡死,alert点击无效,然后一顿google,stackoverflow。最终找到了解决方案。

//假如你要调用的js方法名称为 “test”
//先获取webView中js上下文
self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//获取js方法
JSValue *jsFun = self.context[@"test"];
//异步主线程执行js方法
dispatch_async(dispatch_get_main_queue(), ^{
//使用js的window.setTimeout方法执行需要调用的方法
       [jsFun.context[@"setTimeout"] callWithArguments:@[jsFun, @0, args];
 });

这里是该问题的具体描述及解决方案,具体原因还不是很理解,等研究过后再加补充,望各路大神指正
https://stackoverflow.com/questions/22876528/calling-jsvalue-callwitharguments-locks-ui-when-alert-is-called

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,261评论 4 61
  • 随着H5技术的兴起,在iOS开发过程中,难免会遇到原生应用需要和H5页面交互的问题。其中会涉及方法调用及参数传值等...
    Chris_js阅读 3,126评论 1 8
  • 前言 关于UIWebView的介绍,相信看过上文的小伙伴们,已经大概清楚了吧,如果有问题,欢迎提问。 本文是本系列...
    Dark_Angel阅读 29,067评论 67 291
  • 今早孩子说给奶奶送饭的,结果喊几遍都不起来,我就不再喊了,放任他去睡,感赏自己按自己的节奏干自己的事,心平气和,没...
    心想事就成阅读 155评论 0 0
  • 我为什么会写这些关于茶叶的文章? 原因其实蛮简单的,每次回老家,总想着带点什么回去给长辈,但又不晓得带什么好?烟,...
    来一趟阅读 2,234评论 2 3