我有一个加载了HTML页面的UIWebView
。此页面上有两个按钮,说退出和提交。我不希望用户能够点击退出按钮,因此一旦页面完成加载(即调用webViewDidFinishLoad
),我使用stringByEvaluatingJavaScriptFromString
通过操作HTML来删除其中一个按钮。我还禁用webViewDidStartLoad
上的UIWebView
上的用户交互,并在webViewDidFinishLoad
上再次启用它。确定stringByEvaluatingJavaScriptFromString何时完成
我发现的问题是stringByEvaluatingJavaScriptFromString
需要一两秒钟才能完成,而且似乎是在它自己的线程中完成的。所以发生的是webViewDidFinishLoad
被调用,用户交互在UIWebView
上被启用,并且如果用户很快,他们可以在stringByEvaluatingJavaScriptFromString
完成之前单击退出按钮。由于stringByEvaluatingJavaScriptFromString
似乎是在它自己的线程上,无法知道它何时完成(它并没有调用webViewDidFinishLoad
),所以完全阻止用户点击Exit按钮的唯一方法是我只能在UIWebView之后启用用户交互有些延迟,这是不可靠的(我怎么才能知道延迟多久?)。
我正确的是stringByEvaluatingJavaScriptFromString
是在线程上完成的,我无法分辨它什么时候结束?任何其他建议如何解决这个问题?
编辑:总之,我想知道的是,如果有可能禁用UIWebView
而stringByEvaluatingJavaScriptFromString
正在执行,并在JavaScript是完成重新启用UIWebView
。
编辑2:这里有一篇文章,这似乎意味着你能以某种方式查询JS引擎看的时候,它的完成,但我无法找到任何其他文献说同样的事情:http://drnicwilliams.com/2008/11/10/to-webkit-or-not-to-webkit-within-your-iphone-app/
编辑3根据Brad Smith的回答,似乎我实际上需要知道在UI执行完javascript后UIWebView何时完成加载。这看起来越来越像我只需要在那里延迟一些。
同样的问题在这里!你的解决方案是什么? – 2013-04-09 11:35:29
我相信我不得不假设它会花费一定的时间,并延迟至少这段时间的处理。 – 2013-04-09 23:42:36
同样的问题。哎唷,必须有更好的方法来做到这一点。 – 2013-07-01 22:56:57