我有使用stringByEvaluatingJavaScriptFromString调用的JS,大约需要9秒才能运行,但是如果用户需要,我希望能够立即取消它。
然而,似乎整个线程被此阻止了。
我准备做任何事情以允许用户取消此操作(例如删除UIWebView)但似乎没有任何工作,因为应用程序在继续之前等待stringByEvaluatingJavaScriptFromString返回。
答案 0 :(得分:0)
不确定如何取消它。为了改善用户界面,请从UIWebView stringByEvaluatingJavaScriptFromString in background,
开始尝试将JavaScript拆分为离散的执行块,并使用JavaScript计时器对它们进行管道处理,如下所示(JS代码,而不是Obj-C):
var i = 0;
var operation = function() {
switch (i) {
case 0:
//do first part of code
break;
case 1:
//do second part of code
break;
case 2:
//do third part of code
break;
etc...
}
//prepare to execute next block
i++;
if (i < TOTAL_PARTS) {
setTimeout(operation, 0);
}
};
operation();
这将阻止您的脚本在执行时阻止用户交互。
有关详细信息,请检查该帖子UIWebView stringByEvaluatingJavaScriptFromString in background。