2009-01-11 7 views
8

Ich bin auf der letzten Strecke meiner ersten einfachen iPhone-Anwendung. Ich baue eine "ungefähre" Ansicht, mit Credits/Info/etc.Hyperlinks in "über" Text für iPhone-Anwendung

Ich scheitere auf die einfachste Sache: Wie kann ich Hyperlinks in den Text einbetten? Ich benutze derzeit eine UIView mit einem UILabel für den Text.

Ich habe hier angeschaut, und die Beispiel-Apps, aber nirgendwo hingekommen. Sollte ich ein UIWebView verwenden?

Thx.

Antwort

11

Ja, verwenden Sie ein UIWebView und fügen Sie statisches HTML ein.

Wie so:

[myWebView loadHTMLString:@"<html><head></head><body style=\"font-family: sans-serif;\"> .... </body></html>" baseURL:nil]; 
4

Sie können Safari auslösen, indem Aufruf UIApplication openURL: Methode mit der URL, die Sie anzeigen möchten. Dies wird Ihre App schließen und dann Safari (oder Mail/Youtube/etc) öffnen.

Sie werden Ihren Link irgendwie, vielleicht in einem Knopf machen wollen. Dieser Teil liegt an dir.

Wenn Sie HTML-Inhalt in Ihre Ansicht einbetten möchten, dann verwenden Sie unbedingt ein UIWebView.

Links erfordern iPhone Dev Center Login.

UIApplication openURL:

iPhone URL Scheme Reference

1

Dank Frank und Ryan.

Zusätzlich zu Franks Richtung musste ich auch das UIWebViewDelegate implementieren und im Interface Builder verlinken. Der Grund war, dass jeder angeklickte Link in meiner Anwendung geöffnet wurde (ohne Navigation möglich ...). Ich brauchte nur diese Methode zu implementieren, die jede URL mit der entsprechenden App geöffnet:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
     [[UIApplication sharedApplication] openURL:request.URL]; 
     return false; 
    } 
    return true; 
} 
6

Um den Web-Browser unter der angegebenen URL zu starten:

NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"]; 
[[UIApplication sharedApplication] openURL:target]; 

Dieser Code kann überall ausgeführt werden. Ich habe UILabel unterklassifiziert, die Methode "touchedSended" hinzugefügt und sie dort eingefügt. (Vergessen Sie nicht labelname.userInteractionEnabled = YES zu setzen;)

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"]; 
    [[UIApplication sharedApplication] openURL:target]; 
} 
4

UIWebView ist wahrscheinlich der falsche Weg, dies zu tun. Es ist SEHR viel Overkill für so etwas. Sie sollten ein Github-Projekt namens ausprobieren.

Es erkennt automatisch alle URLs innerhalb der .text-Eigenschaft.

Sie können es wie so verwenden:

LRLinkableLabel *label = [[LRLinkableLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)]; 
label.delegate = self; 
label.text = @"Check out http://dundermifflin.com to find some great paper deals!"; 

Dann, nur um sicher machen self implementiert diese Methode:

- (void) linkableLabel:(LRLinkableLabel *)label clickedButton:(UIButton *)button forURL:(NSURL *)url { 
    [[UIApplication sharedApplication] openURL:url]; 
} 

Sie können auch die linkColor und textColor Eigenschaften verwenden, um das Aussehen des Etiketts zu konfigurieren . Ab diesem Punkt können Sie es wie jedes andere UILabel verwenden.

Denken Sie daran, die delegate auf nil zu setzen, wenn Sie fertig sind, um sicherzustellen, dass alles aufgeräumt ist.

Hoffe, das hilft.