Получить уведомление об изменении страницы в UIWebView - PullRequest
12 голосов
/ 14 мая 2010

Мне любопытно, есть ли способ обнаружить изменение отображаемого веб-сайта внутри UIWebView. В приложении, над которым я работаю, мы используем UIWebView, чтобы представить часть функциональности, которая в основном состоит из нескольких шагов, которым должен следовать пользователь. Тем не менее, в конце этих шагов будет определенная страница, которую мне нужно идентифицировать, после чего приложение должно будет отображать другое представление.

К сожалению, UIWebViewDelegate, похоже, не работает.

Ответы [ 2 ]

23 голосов
/ 14 мая 2010

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

В этом примере мы говорим, что пользователь проходит 3 шага с именами step1.htm , step2.htm и, наконец, step3.htm . Этот код обнаружит, когда пользователь достигнет третьего и последнего шага.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString *URLString = [[request URL] absoluteString];
    if ([URLString isEqualToString:@"http://www.example.com/step3.htm"]) {
        // The user reached step 3!
    }
    return YES;
}

Обратите внимание, что использование метода absoluteString может быть не лучшим способом узнать, где пользователь просматривает. Взгляните на query, path, parameterString и т.д ...

1 голос
/ 15 августа 2018

в Свифте 4

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {

    if request.url?.absoluteString == "http://www.example.com/step3.htm" {
        // The user reached step 3!
    }

    return true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...