我有一个
我遇到的问题是
我是否正确,
编辑:简而言之,我想知道是否可能在
UIWebView
,它加载了一个HTML页面。这个页面上有两个按钮,分别是Exit和Submit。我不希望用户能够点击Exit按钮,因此一旦页面加载完成(即调用webViewDidFinishLoad
),我使用stringByEvaluatingJavaScriptFromString
来通过操纵HTML删除其中一个按钮。在webViewDidStartLoad
时我还会禁用UIWebView
的用户交互,在webViewDidFinishLoad
上重新启用它。我遇到的问题是
stringByEvaluatingJavaScriptFromString
需要一两秒钟才能完成,而且似乎是在自己的线程中进行的。所以正在发生的情况是,webViewDidFinishLoad
被调用,UIWebView
的用户交互被启用,如果用户很快就可以在stringByEvaluatingJavaScriptFromString
完成之前单击Exit按钮。由于stringByEvaluatingJavaScriptFromString
似乎在自己的线程上没有方法可知道何时完成(它不调用webViewDidFinishLoad
),我唯一看到完全防止用户点击Exit按钮的方法是延迟一段时间后再启用UIWebView
的用户交互,但这种方法是不可靠的(我怎么知道延迟多久?)。我是否正确,
stringByEvaluatingJavaScriptFromString
在它自己的线程上运行,并且我无法知道它何时完成?还有其他建议如何解决这个问题吗?编辑:简而言之,我想知道是否可能在
stringByEvaluatingJavaScriptFromString
执行时禁用UIWebView
,并在javascript执行完成后重新启用UIWebView
。编辑2: 这里有一篇文章似乎在暗示你可以以某种方式轮询JS引擎,以检测何时完成,但我找不到任何其他表明同样事情的参考资料:http://drnicwilliams.com/2008/11/10/to-webkit-or-not-to-webkit-within-your-iphone-app/
编辑3: 根据Brad Smith的回答,似乎我实际上需要知道当javascript执行完毕后,UIWebView何时完成加载自身。看起来我只需要加入某种延时。