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
Schlüsselwörter
- berlin (2)
- blog (5)
- browser (2)
- cocoaheads (5)
- dropbox (1)
- git (7)
- idisk (1)
- iphone (28)
- javascript (2)
- kurztip (4)
- linktips (17)
- mac (9)
- macruby (1)
- objective-c (8)
- ortung (1)
- programmierung (22)
- rails (1)
- railsconf (7)
- ruby (6)
- ruby on rails (7)
- schnipsel (14)
- server (2)
- spiele (1)
- statistiken (3)
- stuttgart (3)
- testen (4)
- tidy (1)
- versionskontrolle (5)
- wwdc (1)
- xcode (9)
- xml (1)
Kommentare
Von Schoerlock vor 388 Tagen hinzugefügt
Danke für den Tipp, klappt einwandfrei!