HTML-ссылки, которые закрывают UIWebView - PullRequest
1 голос
/ 04 ноября 2011

У меня есть обычная HTML-страница с несколькими ссылками. Когда эта html-страница загружается в UIWebView и щелкается ссылка, она должна открываться в safar, а НЕ в UIWebView.

Я думаю, что не могу использовать этот код:

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{
   // NSLog(@"shouldStartLoadWithRequest Loading: %@", [request URL]);
   return TRUE;
}

... потому что это для приложений и не будет работать на HTML-странице, верно?

Thanx M.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Обычно, когда вы хотите открыть ссылку в Safar i, вы делаете это -

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://www.google.co.uk"]];

Но поскольку вы находитесь в UIWebView, вы не можете этого сделать.

Итак, для этого вам нужно реализовать shouldStartLoadWithRequest делегат UIWebView.При каждом нажатии на ссылку в UIWebView вызывается этот делегат.Теперь вы можете решить, что вы хотите.В этом случае вы хотите открыть эту ссылку в Safari.Таким образом, код выглядит следующим образом:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{
    NSURL *requestURL =[[ request URL ] retain]; 
    if (([[ requestURL scheme ] isEqualToString: @"http" ] || 
         [[ requestURL scheme ] isEqualToString: @"https" ] || 
         [[ requestURL scheme ] isEqualToString: @"mailto" ]) 
        && ( navigationType == UIWebViewNavigationTypeLinkClicked ) ) 
    { 
        return ![[ UIApplication sharedApplication] openURL: [requestURL autorelease]]; 
    } 
    [requestURL release]; 
    return YES; 
}

Таким образом, приведенный выше код открывается при каждом открытии http://, https://, and mailto:// URL-адреса во внешних приложениях Safari или Mail.

Также для выбора только URL-адресовзапустив Safari, вы можете изменить их схему с http: // на safari:// или что-то подобное, и отправлять только эти URL-адреса в систему (после замены пользовательской схемы URL-адреса на http://).

Iсделайте это в моей внутренней справочной документации, которая представляет собой HTML, отображаемый в UIWebView, чтобы я не столкнулся с проблемами в процессе обзора, когда в мое приложение встроен веб-браузер общего назначения.

0 голосов
/ 04 ноября 2011

использовать этот

  -(BOOL)webView:(UIWebView *)webView1 shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

        NSURL *requestURL = [[ request URL] retain];
        NSString *str_url=[NSString stringWithFormat:@"%@",requestURL];
        if([str_url isEqualToString:@"about:blank"]){
            [requestURL release];
            return YES;
        }else{
                [[UIApplication sharedApplication] openURL:requestURL];
        }   
        [requestURL release];
        return NO;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...