2009-11-02 4 views

ответ

74

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

- (void)webViewDidFinishLoad:(UIWebView *)webView 

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

webView.request.URL 
+0

Спасибо :) Это сработало :) – ishhhh

+0

Извините, что разбудил мертвую тему, но делает (UIWebview *) webView, является webView именем выхода вашего веб-представления? –

+1

@CameronTarbell Это метод делегата, он пройдет через веб-представление, которое завершит загрузку с помощью переменной 'webView', независимо от имени вашей розетки. – Pascal

1

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

Шаг 1: Установите делегат UIWebViewDelegate в заголовочный файл.

Шаг 2: Добавить следующий webViewDidFinishLoad метод, чтобы получить текущий URL из webview

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"Current URL = %@",webView.request.URL); 

    //-- Add further custom actions if needed 
} 
2

Ни один из найденных решений не работает для меня.

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

uiwebview-load-completion-tracker

1

ответ Паскаля для "Получение URL" часть в порядке.

Однако!

Из документации UIWebViewDelegate, от Apple: «webViewDidFinishLoad: отправлено после того, как веб-просмотр завершает загрузку фрейма».

Рамка = Страница.

webViewDidFinishLoad вызывается, когда страница «загружена». Его также можно назвать много раз до этого. Загрузка страницы с Amazon.com может генерировать дюжину звонков в webViewDidFinishLoad.

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

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