Используя UIWebView с loadHTMLString/loadData сломал позвоночник и вперед кнопки, обходное решение?

Существует известная проблема со встроенным UIWebViews, что при загрузке данных в них использующий loadHTMLString или loadData canGoBack/canGoForward свойства и goBack/goForward методы не работают. Они только работают при использовании loadRequest.

Так как нормальный кэш приложения Safari не работает во встроенном UIWebViews, создавая исходное приложение, что эффективно кэши в других отношениях живое содержание становятся невозможными/неприменимыми. Таким образом, я могу кэшировать содержание HTML, JavaScript, изображений, и т.д. и загрузить их через loadHTMLString или loadData, но тогда спину и передать кнопки, не работают.

Я мог также использовать loadRequest и определить URL файла, но это повреждается когда дело доходит до общения с живым сайтом - даже если я определяю тег (из-за проблем домена cookie).

У меня есть работа вокруг этого, включает в основном перереализацию кэша приложения с помощью локального хранилища (и не имение исходного приложения делает любое кэширование себя), который в порядке, но не действительно идеален. Есть ли какая-либо другая работа arounds/something, я отсутствовал?

11
задан Brian Westphal 5 January 2010 в 22:48
поделиться

3 ответа

Значит, вы сами загружаете HTML, а затем передаете его в UIWebView в виде строки? Почему? Вы модифицируете его "на лету" или что-то в этом роде?

Может быть, вам поможет пользовательская схема URL-адреса? Вы используете loadRequest со своей собственной схемой, которая, в свою очередь, работает с HTTP, а затем передает WebView любые данные?

.
1
ответ дан 3 December 2019 в 12:05
поделиться

Не могли бы вы получить контент, сохранить его в локальной файловой системе, направить веб-просмотр на локальную файловую систему, используя URL-адреса file: //, а затем перехватить следующую ссылку с помощью shouldStartLoadWithRequest, чтобы получить больше в локальную файловую систему , указывать веб-просмотр на новый локальный контент и т. д.?

Мне повезло с UIWebView и URL-адресами file: ///. По сути, вы должны перехватывать запросы на загрузку, получать данные самостоятельно, записывать их в локальную файловую систему с переписанными URL-адресами, а затем загружать их в браузер.

Кажется, нет возможности загрузить / сохранить историю браузера.

0
ответ дан 3 December 2019 в 12:05
поделиться

Я использую canGoBack UIWebView, чтобы проверить, нахожусь ли я на первой странице истории. Если да, то я просто вызываю небольшой метод, который я использовал для загрузки первой страницы (displayLocalResource устанавливает HTMLString и загружает ее в webView). Вот фрагмент:

//Implementing a back button
- (void)backOne:(id)sender{
    if ([webView canGoBack]) {
        // There's a valid webpage to go back to, so go there
        [webView goBack];
    } else {
        // You've reached the end of the line, so reload your own data
            [self displayLocalResource];
        }
    }
2
ответ дан 3 December 2019 в 12:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: