UIWebView завершил загрузку события
Вопрос
Можно ли запустить событие, когда UIWebView (Iphone) завершил загрузку URL-адреса.
Как я могу узнать текущий URL-адрес UIWebView?
Решение
Да, это возможно.Использовать UIWebViewDelegate
протокол и реализуйте в своем делегате следующий метод:
- (void)webViewDidFinishLoad:(UIWebView *)webView
Если вам нужен URL-адрес, вы можете получить последний запрос, используя свойство request
:
webView.request.URL
Другие советы
Ни одно из найденных решений мне не помогло.
Затем я нашел этот пример, который, по крайней мере, работает намного лучше, чем любое другое решение, которое я нашел в Google/StackOverflow.
Очень простой метод:
Шаг 1: Установить делегата UIWebViewDelegate
в заголовочном файле.
Шаг 2: Добавить следующее webViewDidFinishLoad
метод для получения текущего URL-адреса webview
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"Current URL = %@",webView.request.URL);
//-- Add further custom actions if needed
}
Ответ Паскаля на часть «получения URL-адреса» в порядке.
Однако!
Из документации UIWebViewDelegate от Apple:"вебвиевдидфинишлоад:Отправляется после того, как веб-просмотр завершает загрузку кадра».
Рамка != Страница.
webViewDidFinishLoad вызывается, когда страница «загружена».До этого его также можно вызывать много раз.Загрузка страниц с Amazon.com может генерировать дюжину вызовов webViewDidFinishLoad.
Если вы контролируете источник страницы, вы можете провести для нее нагрузочный тест, и в этом случае он будет работать.Если вас беспокоит только вызов «после завершения загрузки страницы», то webViewDidFinishLoad подойдет.
Для произвольных страниц с произвольным JavaScript, бесконечной загрузкой рекламных баннеров, автопрокруткой баннеров или реализацией видеоигры сама идея «завершения загрузки» страницы ошибочна.