iPhone Code Schnipsel: Link aus UIWebView in MobileSafari öffnen

Gegeben

In einem UIWebView wird ein String dargestellt (UIWebView bietet faktisch die einzige Möglichkeit auf dem iPhone, "Rich-Text" darzustellen):

NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:HTMLString baseURL:baseURL];

Gesucht

Links innerhalb des Strings sollen sich bei Aufruf durch den Benutzer in MobileSafari öffnen.

Lösung

Delegate des UIWebView auf eine Subklasse von UIViewController setzen, dort die Methode webView:shouldStartLoadWithRequest:navigationType: definieren:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
                                                 navigationType:(UIWebViewNavigationType)navigationType {
    NSRange range = [[[request URL] absoluteString] rangeOfString:@"file:///"];
    if (range.location == 0) {
        return YES;
    }

    [[UIApplication sharedApplication] openURL:[request URL]];
    return NO;
}

Die Abfrage auf "file:///" ist notwendig, da die Delegate-Methode auch beim Laden des eigentlichen Strings aufgerufen wird. In dem Fall ist der Rückgabewert YES, so dass das UIWebView die Darstellung startet. In allen anderen Fällen wird MobileSafari über openURL aufgerufen und NO zurückgegeben.

Siehe auch

Schlüsselwörter: iphone, programmierung, schnipsel

Von Thomas Dohmke vor 541 Tagen hinzugefügt


Kommentare

Von Schoerlock vor 388 Tagen hinzugefügt

Danke für den Tipp, klappt einwandfrei!

Kommentar hinzufügen

Twitter

Uns auf Twitter verfolgen: