2009-07-23 28 views
7

Tutto ciò che voglio è visualizzare un testo semplice nel mio viewController e fare in modo che i collegamenti ipertestuali siano autopar. Quando l'utente fa clic sul collegamento, voglio che il controllo esegua in qualche modo una richiamata in cui posso fare qualcosa con l'URL. Come posso raggiungere questo obiettivo?Come si usa TTStyledTextLabel?

Ho già controllato il TTCatalog per ore. Ho anche provato a esaminare il codice sorgente di three20 e a esaminare la traccia dello stack. Nessun aiuto. Non riesco proprio a capire come la mia app possa reagire al clic dell'URL. Qualche suggerimento per favore?

+1

Perché non si usa UIWebView? Quando fai clic sul link in webView, UIWebViewDelegate ottiene shouldStartLoadWithRequest messaggio – oxigen

risposta

11

duramente per aiutare senza vedere quello che hai già provato, ma si dovrebbe essere in grado di fare qualcosa di simile al seguente:

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]; 

è quindi possibile utilizzare TTNavigator e TTURLMap per mappare custom-uri://some/url a una particolare scheda di la tua applicazione o gestirla autonomamente nel delegato dell'applicazione. Il modo migliore per scoprire come farlo è guardare l'applicazione di esempio TTNavigatorDemo inclusa nell'origine Three20. In particolare, guarda a AppDelegate.m, che è dove viene eseguita tutta la mappatura degli URL.

+0

Ottimo avvio! Puoi dare un breve esempio di come utilizzare TTNavigator e TTURLMap per dire di premere un controller quando si fa clic sull'URL? – erotsppa

+0

Ho aggiornato la mia risposta per indicarti la direzione giusta per scoprire come funziona la mappatura degli URL. –

+0

Questo sistema di mappatura URL non funzionerebbe per questa domanda, corretto? Sembra che l'URL debba essere preimpostato dallo sviluppatore e non funziona con il testo fornito dall'utente. Voglio che TTStyledTextLabel visualizzi del testo dall'utente e che tutti i collegamenti ipertestuali siano analizzati ed esegua una stessa azione quando si fa clic su – erotsppa

0

Oltre a ciò che Nathan dice sulla mappatura degli URL e sui collegamenti, è anche possibile utilizzare gli stili CSS!

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]; 

Poi, nel tuo StyleSheet.m implementare

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