2010-09-02 6 views
0

J'essaye de lancer un safari externe quand je clique sur un hyperlien dans UIWebView mais dans mon cas rien ne se passe. Si j'essaie d'inclure la cible comme vide et d'ignorer la méthode déléguée UIWebView, elle lance le safari dans la même vue. S'il vous plaît, guidez mes amis comment ouvrir un navigateur externe lorsque vous tapez sur un lien dans UIWebView. je crée UIWebView par programmationProblème avec UIWebView

CGRect webFrame = CGRectMake(10,78,300,50); 
     contactUsView.delegate = self; 
     contactUsView = [[UIWebView alloc] initWithFrame:webFrame]; 
     [contactUsView setOpaque:NO]; 
     contactUsView.backgroundColor = [UIColor clearColor]; 
     NSString *html = @"<html><head></head><body>Copyright \u00A9 2010 <a href='http://www.example.com'>Hello</a><br/>Hi <a href='http://example1.com>Click here</a></body></html>"; 
     [contactUsView loadHTMLString:html baseURL:[NSURL URLWithString:@"http://www.solstice-consulting.com"]]; 



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

    NSURL *requestURL = [ [ request URL ] retain ]; 
    NSLog(@"expected:%d, got:%d", UIWebViewNavigationTypeLinkClicked, navigationType); 

    if (([ [ requestURL scheme ] isEqualToString: @"http" ] 
      || [ [ requestURL scheme ] isEqualToString: @"https" ]) 
     && (navigationType == UIWebViewNavigationTypeLinkClicked)) { 
     return ![ [ UIApplication sharedApplication ] openURL: [ requestURL autorelease ] ]; 
    } 

    [ requestURL release ]; 

    return YES; 
} 

Les sorties log attendus 0 et obtenu que 5..I ne comprennent pas quoi faire ..

+0

Vous avez toujours cette fuite de mémoire avec 'retain' sur' [request URL] '. Le 'retenir 'n'est pas nécessaire. Débarrassez-vous de cela. –

Répondre

1
NSURL *requestURL = [request URL]; 
NSString* urlString = [requestURL absoluteString]; 
if ([urlString isEqualToString: @"http://www.example.com"]) 
{ 

    // Try this, it will work fine 

} 
1

Changer votre
(navigationType == UIWebViewNavigationTypeLinkClicked)
à
(navigationType == UIWebViewNavigationTypeLinkClicked || navigationType == UIWebViewNavigationTypeOther)

Questions connexes