Подтвердить что ты не робот

IOS 6 - загрузка UIWebViewHTMLString не работает должным образом

Если кто-то испытал проблему ниже, сообщите мне, если вы смогли найти исправление. Я потратил пару дней, пытаясь придумать решение, но пока не повезло. Я использую XCode 4.5 с IOS 6 SDK Golden Master.

В основном, мое приложение читает и файл HTML и передает его содержимое в веб-представление для рендеринга.

NSString *path = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"html"];
NSString *html = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];

NSURL *baseURL = [NSURL URLWithString:@"http://mysite.com"];

[webView loadHTMLString:html baseURL:baseURL];

HTML содержит несколько ссылок <link> теги, например:   

Проблема заключается в том, что UIWebView, похоже, имеет проблемы с загрузкой файла CSS. UIWebViewDelegate сразу получает webViewDidStartLoad, но требуется около 5 минут, прежде чем он получит сообщение WebViewDidFinishLoad. CSS не подбирается.

Если я удаляю ссылку из HTML, все работает нормально.

4b9b3361

Ответ 1

У меня была аналогичная проблема в моих веб-представлениях после выхода iOS 6. Попробуйте установить для следующего свойства UIWebView значение true (YES) {доступно только в iOS 6+}:

 suppressesIncrementalRendering
 A Boolean value indicating whether the web view suppresses content rendering until it is
 fully loaded into memory.

 @property(nonatomic) BOOL suppressesIncrementalRendering

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

Сообщите мне, если это поможет?

Ответ 2

Без прямого доступа к проекту это действительно сложно сказать. Вы пытались загрузить страницу в локальном браузере, чтобы подтвердить, что css действительно загружается? Если он загружается, я предлагаю запустить приложение в симуляторе, а также запустить что-то вроде прокси-сервера Charles. Чарльз записывает все ваши исходящие запросы и отображает их результаты. Таким образом, вы можете определить, действительно ли проблема является внутренней или внешней для sdk.

Если у вас есть учетная запись разработчика Apple, просмотрите видеоролики WSDC 2012. Вы можете найти их здесь: https://developer.apple.com/videos/wwdc/2012/. Существует одно видео под названием "Отладка UIWebViews и веб-сайтов в iOS". Я еще не смотрел его, но он может содержать некоторую информацию, которая поможет вам решить проблему.

Удачи!

Ответ 3

Итак, если все css и другие файлы находятся на удаленном сервере, зачем вы загружаете html из локального файла? Вероятно, это связано с безопасностью (вы пытаетесь загрузить html из локального файла, в то время как другие вещи с удаленного), или просто проблема с обработкой baseURL в UIWebView