UIWebView отображают локально сохраненный веб-сайт (HTML, изображения, JavaScript)

Это - пример функционального кода процессуального кодекса v.

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

, Если Вы вставляете функциональное описание того, что Вы хотите, например, SQL тогда, Вы даете компилятору широкий спектр опций оптимизировать.

, Возможно, некоторый тип анализа кода был бы в состоянии найти этот тип проблемы или представляющий во времени выполнения, но тогда Вы захотите изменить источник на что-то более разумное.

5
задан DevDevDev 1 October 2009 в 02:54
поделиться

3 ответа

Похоже, вы загружаете HTML из своего пакета. Это означает, что все дополнительные файлы (.js, .css и любые мультимедийные файлы) также должны присутствовать в вашем пакете. Итак, первое, что нужно проверить, - это заглянуть внутрь содержимого вашего исполняемого файла и убедиться, что включены файлы js и т. Д.

Если все выглядит нормально, то следующее, что нужно проверить, - это ссылки на файлы html, js или css. контент через относительные или абсолютные URL. Если в веб-контенте есть ссылка на абсолютный путь, то UIWebView будет пытаться загружать этот контент каждый раз, поэтому он будет работать только при наличии сетевого подключения. Если путь относительный, он будет искать в пакете, существует ли такой файл.

Когда вы включили html и контент в файл проекта XCode, вы, вероятно, перетащили файл (ы) на боковую панель проекта, и вас спросили, «Рекурсивно создавать группы для любых добавленных папок» или «Создать ссылки на папки» для любых добавленных папок ".

Значение по умолчанию - первое, что означает, что XCode создает желтую папку в вашем проекте, но игнорирует иерархию каталогов на диске, когда приходит время сгенерировать выходной пакет. Если вы выберете второй вариант, папка станет синей, и если вы посмотрите в выходной пакет, вы увидите, что вся иерархия папок была реплицирована.

Первый работает для простых веб-страниц, где все находится на одном уровне папки и вы можете использовать метод, который вы указали выше, чтобы загрузить его. Второй случай работает лучше, если ваша веб-страница сложная и ссылается на контент в подпапках, и в этом случае вам нужно загружать веб-страницы по относительному пути (скажем, из папки 'webpages'):

NSString *path = [[NSBundle mainBundle] 
                 pathForResource:@"index" ofType:@"html" 
                     inDirectory:@"webpages"];

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

13
ответ дан 18 December 2019 в 07:30
поделиться

Вам необходимо установить следующее:

myWebView.dataDetectorTypes = UIDataDetectorTypeLink
1
ответ дан 18 December 2019 в 07:30
поделиться

Проблема в том, что этот вызов:

NSURL *url = [NSURL fileURLWithPath:path];

не устанавливает baseURL, поэтому относительные пути в файле .html для таких вещей, как javascript, css, изображения и т. Д., Не работают.

Вместо этого используйте следующее:

url = [NSURL URLWithString: [path lastPathComponent] 
             relativeToURL: [NSURL fileURLWithPath: [path stringByDeletingLastPathComponent] 
                                       isDirectory: YES]];

, и тогда будут найдены такие вещи, как "styles.css" в файле index.html. IFF они скопированы в пакет рядом с файлом .html.

7
ответ дан 18 December 2019 в 07:30
поделиться