Ошибка iOS 5: UIWebView и возврат и переход вперед

#objective-c #ios #ios4 #ios5

#objective-c #iOS #ios4 #ios5

Вопрос:

Я обнаружил ошибку в iOS 5.

Когда вы используете UIWebView и заходите на некоторые сайты, вы создаете ссылки на историю, которые выглядят как в любом другом браузере.

Если вам нравится использовать панель навигации, можете использовать функции goBack и goForward

В iOS 4.3 и ниже при вызове этой функции программа вызывает функцию делегирования

 webView:shouldStartLoadWithRequest:navigationType:
  

Но в iOS 5.0 это может произойти или нет. Если сайт находится в кэше, он не вызывает эту функцию. Я видел, что это происходит только на 1 уровне (1 щелчок в GoBack или 1 в goFoward), при втором щелчке он передается в функцию.

Почему они это меняют???? Даже если он находится в кэше, программе приходится запрашивать меня.. Теперь, как это решить: я пытаюсь создать стек с историей браузера и проверяю URL. Но у меня проблема; (

Другого способа нет?

  • Я не могу видеть историю браузера? Я должен создать свой список потоков?
  • Я не могу очистить кеш, чтобы принудительно передать его в функцию?

Есть предложения?

Комментарии:

1. Это не ошибка в iOS 5. Он не загружается, поэтому он не выдаст вам этот обратный вызов. Если вы хотите создать стек истории пользователей, тогда вам нужно сохранять запросы, внешние по отношению к веб-просмотру, когда они отправляются forward .

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

3. Если вы действительно считаете, что это ошибка, отправьте отчет по адресу bugreport.apple.com

4. Для меня не существует такого понятия, как «ошибка». Вы полагаетесь на неправильное поведение UIWebView. Ответ Абхи — это то, к чему я клонил.

5. @Jessedc, лол, ты прав. «ошибка для меня» — это не очень хорошо сказано…

Ответ №1:

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

Вы должны создать свои собственные goBack: и goForward: действия на своем собственном контроллере и привязать к ним кнопки возврата / перехода вперед:

 - (IBAction)goBack:(id)sender
{
    [self doStuff];

    [self.webView goBack:sender];
}