У меня есть UIWebView
, который загружает HTML-страницу. На этой странице есть две кнопки, например "Выход и отправка". Я не хочу, чтобы пользователи могли нажимать кнопку "Выход" , поэтому после завершения загрузки страницы (т.е. webViewDidFinishLoad
) я использую stringByEvaluatingJavaScriptFromString
для удаления одной из этих кнопок, манипулируя HTML. Я также отключил взаимодействие пользователя с UIWebView
на webViewDidStartLoad
и снова включил его на webViewDidFinishLoad
.
Проблема, которую я нахожу, заключается в том, что stringByEvaluatingJavaScriptFromString
занимает второй или две, чтобы завершить, и, похоже, это делается в ней собственной нитью. Так что происходит то, что вызывается webViewDidFinishLoad
, взаимодействие с пользователем включено в UIWebView
, и если пользователь работает быстро, они могут нажать кнопку "Выход" до завершения stringByEvaluatingJavaScriptFromString
. Поскольку stringByEvaluatingJavaScriptFromString
, похоже, находится на нем в своем потоке, не имея возможности узнать, когда он закончил (он не вызывает webViewDidFinishLoad
), единственный способ полностью запретить пользователям нажимать кнопку "Выход" , которую я вижу, - это включить только взаимодействие с пользователем на UIWebView после некоторой задержки, что ненадежно (как я могу действительно знать, как долго задерживаться?).
Правильно ли, что stringByEvaluatingJavaScriptFromString
выполняется на нем по потоку, и я не могу сказать, когда он закончит? Любые другие предложения о том, как обойти эту проблему?
EDIT:. Короче говоря, я хочу знать, можно ли отключить UIWebView
, пока выполняется stringByEvaluatingJavaScriptFromString
, и снова включить UIWebView
, когда javascript закончил.
РЕДАКТИРОВАТЬ 2: Здесь есть статья, которая, как представляется, может каким-то образом опросить механизм JS, чтобы увидеть, когда она закончится, но я не могу найти никаких других ссылок, говорящих одно и то же: http://drnicwilliams.com/2008/11/10/to-webkit-or-not-to-webkit-within-your-iphone-app/
РЕДАКТИРОВАТЬ 3 Основываясь на ответе Брэда Смита, мне кажется, что мне действительно нужно знать, когда UIWebView закончил загрузку после выполнения javascript. Он выглядит все более и более похожим на то, что мне просто нужно поместить там задержки.