Вопрос

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

<Р> Чтобы сохранить память я только загрузить их по требованию, как продиктована ViewController viewWillAppear обратного вызова. (И выгрузить закадровый экземпляров в ответ на didReceiveMemoryWarning сообщения.)

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

<Р> Это было бы очень аккуратно, чтобы быть в состоянии иметь viewWillAppear не возвращаться до тех пор, пока UIWebView полностью оказаны. Но как это сделать?

<Р> Я говорю UIWebView, что для визуализации, отправив ему сообщение loadHTMLString:baseURL:. Это асинхронный, а через некоторое время (в ближайшее время) позже делегат Webview ныряет перезвонил webViewDidFinishLoad.

<Р> Я экспериментировал с управлением runloop внутри viewWillAppear, работает либо NSDefaultRunLoopMode или UITrackingRunLoopMode. Это работает в тренажере (он жалуется на журнал

  <Р> [CATransaction синхронизация] вызывается внутри транзакции
<Р>, но делает работу), но на устройстве это зависаний, с webViewDidFinishLoad никогда не вызывается.

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

Нет правильного решения

Другие советы

<Р> Много решений здесь, я думаю. Быстрый один должен загрузить UIWebView с его скрытым свойство установлено значение YES. Затем установите UIViewController в качестве делегата UIWebViews и реализации:

<Р> - (void)webViewDidFinishLoad:(UIWebView *)webView <Р>, где вы установите свойство обратно в NO.

<Р> Вещь отметить, что webViewDidFinishLoad будет срабатывать несколько раз, если вы обрамлении / внедренный контент. Таким образом, вы должны следить за этим. Не должно быть действительно проблема, если вы загружаете локального контента.

<Р> Мне нравится решение лучший monowerker, но другое решение было бы удержать уже оказанной UIWebView все время (в каком-то более постоянного, чем объект контроллера представления). Я бы только сделать это, если внешний вид раствора monowerker является слишком разрушительны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow