Существует известная проблема со встроенным UIWebViews, что при загрузке данных в них использующий loadHTMLString или loadData canGoBack/canGoForward свойства и goBack/goForward методы не работают. Они только работают при использовании loadRequest.
Так как нормальный кэш приложения Safari не работает во встроенном UIWebViews, создавая исходное приложение, что эффективно кэши в других отношениях живое содержание становятся невозможными/неприменимыми. Таким образом, я могу кэшировать содержание HTML, JavaScript, изображений, и т.д. и загрузить их через loadHTMLString или loadData, но тогда спину и передать кнопки, не работают.
Я мог также использовать loadRequest и определить URL файла, но это повреждается когда дело доходит до общения с живым сайтом - даже если я определяю тег (из-за проблем домена cookie).
У меня есть работа вокруг этого, включает в основном перереализацию кэша приложения с помощью локального хранилища (и не имение исходного приложения делает любое кэширование себя), который в порядке, но не действительно идеален. Есть ли какая-либо другая работа arounds/something, я отсутствовал?
Значит, вы сами загружаете HTML, а затем передаете его в UIWebView в виде строки? Почему? Вы модифицируете его "на лету" или что-то в этом роде?
Может быть, вам поможет пользовательская схема URL-адреса? Вы используете loadRequest со своей собственной схемой, которая, в свою очередь, работает с HTTP, а затем передает WebView любые данные?
.Не могли бы вы получить контент, сохранить его в локальной файловой системе, направить веб-просмотр на локальную файловую систему, используя URL-адреса file: //, а затем перехватить следующую ссылку с помощью shouldStartLoadWithRequest, чтобы получить больше в локальную файловую систему , указывать веб-просмотр на новый локальный контент и т. д.?
Мне повезло с UIWebView и URL-адресами file: ///. По сути, вы должны перехватывать запросы на загрузку, получать данные самостоятельно, записывать их в локальную файловую систему с переписанными URL-адресами, а затем загружать их в браузер.
Кажется, нет возможности загрузить / сохранить историю браузера.
Я использую 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];
}
}