Определение момента завершения stringByEvaluatingJavaScriptFromString

у меня есть UIWebView , который загружает HTML-страницу. Эта страница на нем есть две кнопки, скажем, «Выход» и «Отправить». Я не хочу, чтобы пользователи могли нажимать кнопку «Выход», поэтому после завершения загрузки страницы (т.е. вызывается webViewDidFinishLoad ), я использую stringByEvaluatingJavaScriptFromString , чтобы удалить одну из этих кнопок, манипулируя HTML. Я также отключаю взаимодействие с пользователем на UIWebView на webViewDidStartLoad и снова включаю его на webViewDidFinishLoad .

Проблема, которую я обнаружил, заключается в том, что stringBromingFromatingScriptJavaEvalScript занимает секунду или две, и кажется, что это делается в собственном потоке. Итак, что происходит: вызывается 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. Это все больше и больше похоже на то, что мне просто нужно вставить что-то вроде задержки.

13
задан Ben Williams 15 January 2011 в 02:41
поделиться