Вопрос

Можно ли запустить событие, когда UIWebView (Iphone) завершил загрузку URL-адреса.

Как я могу узнать текущий URL-адрес UIWebView?

Это было полезно?

Решение

Да, это возможно.Использовать UIWebViewDelegate протокол и реализуйте в своем делегате следующий метод:

- (void)webViewDidFinishLoad:(UIWebView *)webView

Если вам нужен URL-адрес, вы можете получить последний запрос, используя свойство request:

webView.request.URL

Другие советы

Ни одно из найденных решений мне не помогло.

Затем я нашел этот пример, который, по крайней мере, работает намного лучше, чем любое другое решение, которое я нашел в Google/StackOverflow.

uiwebview-load-completion-tracker

Очень простой метод:

Шаг 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, бесконечной загрузкой рекламных баннеров, автопрокруткой баннеров или реализацией видеоигры сама идея «завершения загрузки» страницы ошибочна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top