У меня есть базовый веб-браузер, использующий UIWebView
. Я заметил, что для некоторых страниц не вызывается ни один из методов UIWebViewDelegate
.
Пример страницы, на которой это происходит: http://www.youtube.com/user/google. Вот шаги по воспроизведению проблемы (убедитесь, что вы вставили NSLog
вызовы в методы UIWebViewDelegate
вашего контроллера):
- Загрузите вышеуказанный URL-адрес YouTube в
UIWebView
[обратите внимание, что здесь методы UIWebViewDelegate
вызываются при загрузке страницы]
- Коснитесь категории «Загрузка» на странице
- Нажмите любое видео в этой категории
[ проблема: обратите внимание, что загружена новая страница, но ни один из делегатов UIWebView не вызывается]
Я знаю, что это не проблема неправильной установки делегата UIWebView
, поскольку методы делегата вызываются при загрузке других ссылок (например, если вы пытаетесь щелкнуть ссылку, которая выводит вас за пределы YouTube, вы заметите, как вызывается метод делегата).
Изначально я чувствовал, что это может быть потому, что страница загружается с использованием AJAX, который может не вызывать метод делегата. Но потом, когда я проверил Safari на iPhone, у него не было этой проблемы, поэтому, должно быть, это что-то на моей стороне.
Я также заметил, что у Three20 TTWebController
точно такая же проблема, как и у меня.
Но проблема, которая возникает из-за этой проблемы, заключается в том, что без вызова методов делегата я не могу обновить пользовательский интерфейс, чтобы включить / отключить кнопки просмотра назад и вперед при загрузке новых запросов.
И идея, почему это происходит, или как я могу обойти это, чтобы обновить пользовательский интерфейс при создании нового запроса?