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