最近一直在搞一個套殼的app腻暮,作為臨時方案,并且為了能夠使交互與安卓端統(tǒng)一徙融,用的UIWebView洒缀,體驗(yàn)就不要說了,卡出翔欺冀。
在使用UIWebView的時候出現(xiàn)了這樣一個問題树绩,當(dāng)使用[ JSValue callWithArguments:]方法時,如果調(diào)用的js方法有alert隐轩,就會導(dǎo)致UI卡死饺饭,alert點(diǎn)擊無效,然后一頓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];
});
這里是該問題的具體描述及解決方案,具體原因還不是很理解军援,等研究過后再加補(bǔ)充仅淑,望各路大神指正
https://stackoverflow.com/questions/22876528/calling-jsvalue-callwitharguments-locks-ui-when-alert-is-called