У меня есть UIWebView
, который загружает HTML-страницу. На этой странице есть две кнопки: «Выход» и «Отправить». Я не хочу, чтобы пользователи могли нажимать кнопку «Выход», поэтому после завершения загрузки страницы (т. Е. Вызывается webViewDidFinishLoad
) я использую stringByEvaluatingJavaScriptFromString
, чтобы удалить одну из этих кнопок, манипулируя HTML. Я также отключаю взаимодействие с пользователем на UIWebView
на webViewDidStartLoad
и включаю его снова на webViewDidFinishLoad
.
Проблема, которую я обнаружил, состоит в том, что stringByEvaluatingJavaScriptFromString
занимает секунду или две, чтобы завершиться, и, кажется, это делается в своем собственном потоке. Таким образом, происходит то, что вызывается webViewDidFinishLoad
, на UIWebView
включено взаимодействие с пользователем, и, если пользователь быстр, он может нажать кнопку «Выход» до завершения stringByEvaluatingJavaScriptFromString
. Поскольку stringByEvaluatingJavaScriptFromString
, кажется, находится в своем собственном потоке без возможности узнать, когда он закончил (он не вызывает webViewDidFinishLoad
), единственный способ полностью запретить пользователям нажимать кнопку «Выход», которую я вижу, - это только включить взаимодействие с пользователем. в UIWebView после некоторой задержки, которая ненадежна (как я могу действительно знать, как долго задерживаться?).
Правильно ли я в том, что stringByEvaluatingJavaScriptFromString
выполняется на нити, и я не могу сказать, когда она закончится? Любые другие предложения о том, как обойти эту проблему?
РЕДАКТИРОВАТЬ: Короче говоря, я хочу знать, можно ли отключить 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. Все больше и больше похоже на то, что мне просто нужно добавить отсрочку.