最近一直在搞一個套殼的app,作為臨時方案,并且為了能夠使交互與安卓端統(tǒng)一,用的UIWebView,體驗就不要說了,卡出翔。
在使用UIWebView的時候出現(xiàn)了這樣一個問題,當使用[ JSValue callWithArguments:]方法時,如果調(diào)用的js方法有alert,就會導致UI卡死,alert點擊無效,然后一頓google,stackoverflow。最終找到了解決方案。
//假如你要調(diào)用的js方法名稱為 “test”
//先獲取webView中js上下文
self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//獲取js方法
JSValue *jsFun = self.context[@"test"];
//異步主線程執(zhí)行js方法
dispatch_async(dispatch_get_main_queue(), ^{
//使用js的window.setTimeout方法執(zhí)行需要調(diào)用的方法
[jsFun.context[@"setTimeout"] callWithArguments:@[jsFun, @0, args];
});
這里是該問題的具體描述及解決方案,具體原因還不是很理解,等研究過后再加補充,望各路大神指正
https://stackoverflow.com/questions/22876528/calling-jsvalue-callwitharguments-locks-ui-when-alert-is-called