Могу ли я ссылаться на файл HTML в моем проекте из UIWebView? - PullRequest
0 голосов
/ 28 января 2011

Если я загружаю строку, содержащую HTML, в UIWebView, и эта строка содержит объекты (гиперссылки), относящиеся к этой строке, т. Е. Там, где есть некоторый объект с идентификатором «что-то», тогда ссылка работает - щелкните по нейи веб-представление переходит к ссылочному объекту.

Я хочу получить навигацию к другому файлу в моем проекте, другими словами, как если бы путь к другому файлу был URL.

Я обнаружил, что если href - это URL, такой как href = "http://www.amazon.com",, то ссылка работает.

Если я добавлю имя файла, ИЛИ [NSBundle mainBundle] pathForResource:]с этим именем, в href, тогда ссылка не работает.

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

1 Ответ

1 голос
/ 01 февраля 2011

Я нашел решение по этой ссылке:

Как использовать Javascript для связи с кодом Objective-c?

По сути, решение заключается в реализации UIWebViewDelegateпротокол должен использовать методStartLoadWithRequest и «перехватывать» определенное значение схемы.Так что мои ссылки вместо того, чтобы говорить что-то вроде:

<a href="http://someplace.location">

, выглядят так:

<a href="mylink://#filename.ext">

Перехватывая попытки загрузить что-либо с помощью схемы «mylink», я могу использовать:

[[request URL] fragment]

в shouldStartLoadWithRequest и получите файл filename.ext.Затем я освобождаю свой предыдущий UIWebView, загружаю содержимое указанного файла и создаю содержимое нового UIWebView.Эффект заключается в том, что ссылки работают нормально, даже если они реализованы с моим кодом.Я возвращаю НЕТ, потому что я не хочу, чтобы обычная загрузка имела место.Если схема НЕ mylink, я могу вернуть YES, чтобы разрешить нормальную работу.

К сожалению, у меня все еще нет способа перейти к фрагменту в веб-представлении.При ссылке на реальный URL вы можете сказать что-то вроде «www.foo.org # page50» и сразу перейти туда, где объект на новой странице имеет идентификатор «page50».С помощью моего метода я могу перейти только к началу страницы.

Это также не даст мне функцию «возврата», если я не запишу имена файлов и не реализую ее сам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...