Отсрочка viewWillAppear до webViewDidFinishLoad

У меня есть приложение, которое используетUIWebViews в нескольких контроллерах представления.UIWebViews используются для рендеринга локально сгенерированного HTML, медленный доступ к сети не требуется.

Чтобы сохранить память, я загружаю их только по запросу, как подсказывает viewcontrollerviewWillAppear Перезвони. (И выгрузить закадровые экземпляры в ответ наdidReceiveMemoryWarning Сообщения.)

Проблема в том, что пользователь видит html-файл, который иногда сопровождается вспышками стилей и другими неприятными артефактами. Я бы предпочел, чтобы рендеринг выполнялся за кадром, и раскрывал полностью визуализированный вид, когда он будет готов.

Было бы очень аккуратно иметь возможность иметьviewWillAppear не возвращать, пока UIWebView не будет полностью отображен. Но как?

Я говорюUIWebView что сделать, отправив емуloadHTMLString:baseURL: сообщение. Это асинхронно, и через некоторое время (скоро) делегат веб-просмотра перезваниваетсяwebViewDidFinishLoad.

Я экспериментировал с запуском внутриviewWillAppearработает либоNSDefaultRunLoopMode или жеUITrackingRunLoopMode, Это работает в симуляторе (жалуется в лог

[CATransaction синхронизировать] вызывается внутри транзакции

но работает) но на устройстве он блокируется, сwebViewDidFinishLoad никогда не вызывать.

(Кроме того, похоже, чтоUIWebView загрузка свойства не работает. По крайней мере, после того, как я позвонюloadHTMLString:baseURL: и до получения обратного звонка это не правда.)

Ответы на вопрос(2)

Ваш ответ на вопрос