Как проверить, загружен ли URL-адрес UIWebview или нет?

У меня есть статическая веб-страница с примерно 10 ссылками (элементами). Мне нужно просто: когда пользователь щелкнул ссылку, откройте ее в новом веб-просмотре. Когда пользователь вернется в меню, нажмите еще раз на эту ссылку, загрузите ранее открытое веб-представление (нет необходимости добавлять новое веб-представление с тем же URL-адресом). Вот мое решение: сохранить загруженный URL-адрес и проверить его при предварительной загрузке нового клика.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if(navigationType == UIWebViewNavigationTypeLinkClicked) {
        if(![self checkIsAlreadyLoaded:request]) {
            // load new webview
            [self addWebView:request];
            return NO;
        }
    }
    return YES;
}

- (BOOL)checkIsAlreadyLoaded:(NSURLRequest *)request {
    NSString *urlToCheck = request.URL.absoluteString;
    NSLog(@"URL to check: %@", urlToCheck);
    for (int i = 0; i < self.visitedURLsArray.count; i++) {
        if([[self.visitedURLsArray objectAtIndex:i] isEqualToString:request.URL.absoluteString]) {
            NSLog(@"URL Found!");
            return YES;
        }
    }

    NSLog(@"*** NOT MATCHING ***");
    return NO;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    if(![self.visitedURLsArray containsObject:webView.request.URL.absoluteString]) {
        NSLog(@"saved url: %@", webView.request.URL.absoluteString);
        [self.visitedURLsArray addObject:webView.request.URL.absoluteString];
    }
}

Некоторые из моих ссылок являются ссылками Google, и у меня проблемы с этими ссылками. Пример: Google+ URL:

Поскольку сохраненный URL-адрес всегда отличается от начального URL-адреса, я не могу открыть сохраненный URL-адрес, что мне делать с этим?


person HoangNA    schedule 08.12.2015    source источник
comment
Вы можете ссылаться здесь. Вы должны искать, прежде чем задать вопрос   -  person dieuvn3b    schedule 08.12.2015
comment
@bluesky: этот вопрос не помогает мне найти открытый URL. Когда я открываю ссылку в веб-просмотре, конечная ссылка (та, которую я могу сохранить в массиве) не совпадает с начальной ссылкой, поэтому сравнение сохраненной ссылки с последней нажатой ссылкой всегда возвращает FALSE.   -  person HoangNA    schedule 08.12.2015
comment
Вы можете хранить и сравнивать запросы, а не просто сравнивать URL-адреса.   -  person Yedy    schedule 08.12.2015


Ответы (1)


сохраните URL-адрес перед перенаправлением // сохраните его в своем @interface

@property NSURL *urlBeingLoaded;

....

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if(navigationType == UIWebViewNavigationTypeLinkClicked) {
        if(![self checkIsAlreadyLoaded:request]) {
            // load new webview
            self.urlBeingLoaded = request.URL;
            [self addWebView:request];
            return NO;
        }
    }
    return YES;
}

- (BOOL)checkIsAlreadyLoaded:(NSURLRequest *)request {
    NSString *urlToCheck = request.URL.absoluteString;
    NSLog(@"URL to check: %@", urlToCheck);
    for (int i = 0; i < self.visitedURLsArray.count; i++) {
        if([[self.visitedURLsArray objectAtIndex:i] isEqualToString:request.URL.absoluteString]) {
            NSLog(@"URL Found!");
            return YES;
        }
    }

    NSLog(@"*** NOT MATCHING ***");
    return NO;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    if(![self.visitedURLsArray containsObject:_urlBeingLoaded]) {
        NSLog(@"saved url: %@", _urlBeingLoaded);
        [self.visitedURLsArray addObject:self.urlBeingLoaded];
    }
}
person Daij-Djan    schedule 08.12.2015