2009-07-23 4 views
7

Alles, was ich will ist, um einige einfache Text in meinem ViewController anzuzeigen und die Hyperlinks Autoparsen. Wenn der Benutzer auf den Link klickt, möchte ich, dass das Steuerelement irgendwie einen Rückruf durchführt, wo ich etwas mit der URL machen kann. Wie kann ich das erreichen?Wie verwenden Sie TTSstyledTextLabel?

Ich habe schon stundenlang durch den TTCatalog geschaut. Ich habe auch versucht, in den Quellcode von three20 zu schauen und die Stack-Spur zu betrachten. Keine Hilfe. Ich kann einfach nicht herausfinden, wie meine App auf den Klick der URL reagieren kann. Irgendwelche Hinweise bitte?

+1

implementieren Warum Sie UIWebView nicht verwenden? Wenn Sie auf Link in WebView klicken, erhalten UIWebViewDelegate die Meldung "shouldStartLoadWithRequest" – oxigen

Antwort

11

Fest ohne zu sehen, zu helfen, was Sie bereits versucht haben, aber man sollte etwas sein kann wie das tun, folgende:

TTStyledTextLabel* label = [[[TTStyledTextLabel alloc] 
     initWithFrame:someFrame] autorelease]; 
NSString* labelText = @"This should <a href=\"custom-uri://some/url\">work</a>"; 
label.text = [TTStyledText textFromXHTML:labelText lineBreaks:NO URLs:YES]; 
[someView addSubview:label]; 

Sie dann TTNavigator und TTURLMap können custom-uri://some/url auf einen bestimmten Controller zur Karte in Ihre Anwendung oder behandeln Sie sie selbst in Ihrem Anwendungsdelegaten. Der beste Weg, um herauszufinden, wie man das macht, ist die TTNavigatorDemo Beispielanwendung, die in der Three20-Quelle enthalten ist. Schauen Sie sich speziell AppDelegate.m an, wo alle URL-Mappings durchgeführt werden.

+0

Toller Start! Können Sie ein kurzes Beispiel dafür geben, wie Sie mit TTNavigator und TTURLMap sagen können, dass Sie einen Controller beim Klicken auf die URL drücken sollen? – erotsppa

+0

Ich habe meine Antwort aktualisiert, um Sie in die richtige Richtung zu weisen, um herauszufinden, wie die URL-Mapping-Dateien funktionieren. –

+0

Dieses URL-Mapping-System würde für diese Frage nicht funktionieren, richtig? Es sieht so aus, als ob die URL vom Entwickler voreingestellt sein muss und nicht mit dem Text funktioniert, den der Benutzer angibt. Ich möchte, dass TTSstyledTextLabel Text vom Benutzer anzeigt und alle Hyperlinks analysiert und eine einzige Aktion ausführt, wenn Sie darauf klicken – erotsppa

0

Zusätzlich zu dem, was Nathan über URL-Mapping und Links sagt, können Sie auch CSS-Stile verwenden!

TTStyledTextLabel* label = [[[TTStyledTextLabel alloc] initWithFrame:someFrame] autorelease]; 
NSString* labelText = @"This should <a href=\"custom-uri://some/url\">work</a> and 
<span class=\"redText\">this should be red</span>"; 
label.text = [TTStyledText textFromXHTML:labelText lineBreaks:NO URLs:YES]; 
[someView addSubview:label]; 

Dann in Ihrem StyleSheet.m

- (TTStyle*) redText { 
    return [TTTextStyle styleWithFont:[UIFont systemFontOfSize:12] color:RGBCOLOR(255,0,0) next:nil]; 
}