2009-07-23 26 views
7

Todo lo que quiero es mostrar un texto simple en mi viewController y hacer que los hipervínculos se analicen automáticamente. Cuando el usuario hace clic en el enlace, quiero que el control realice de alguna manera una devolución de llamada donde pueda hacer algo con la URL. ¿Cómo puedo conseguir esto?¿Cómo se usa TTStyledTextLabel?

Ya he consultado el TTCatalog durante horas. También intenté buscar en el código fuente de three20 y también en el seguimiento de la pila. No ayuda. Simplemente no puedo entender cómo mi aplicación puede reaccionar al hacer clic en la URL. ¿Algún consejo por favor?

+1

¿Por qué no se utiliza UIWebView? Cuando hace clic en el enlace en webView, UIWebViewDelegate obtiene el mensaje shouldStartLoadWithRequest – oxigen

Respuesta

11

duro para ayudar sin ver lo que ya ha intentado, pero usted debería ser capaz de hacer algo como lo siguiente:

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

A continuación, puede utilizar TTNavigator y TTURLMap para mapear custom-uri://some/url a un controlador en particular en su aplicación, o manejarlo usted mismo en su delegado de la aplicación. El mejor lugar para descubrir cómo hacerlo es mirando la aplicación de ejemplo TTNavigatorDemo incluida en la fuente Three20. Específicamente, mira AppDelegate.m que es donde se realizan todas las asignaciones de URL.

+0

¡Buen comienzo! ¿Puedes dar un breve ejemplo de cómo usar TTNavigator y TTURLMap para decir push un controlador cuando se hace clic en la URL? – erotsppa

+0

He actualizado mi respuesta para indicarle la dirección correcta para descubrir cómo funciona el material de asignación de URL. –

+0

Este sistema de mapeo de url no funcionaría para esta pregunta, ¿correcto? Parece que el url debe ser preestablecido por el desarrollador y no funciona con el texto proporcionado por el usuario. Quiero que TTStyledTextLabel muestre algo de texto del usuario y analice todos los hipervínculos y realice una sola acción al hacer clic en – erotsppa

0

Además de lo que dice Nathan sobre el mapeo de URL y enlaces, ¡también puedes usar estilos 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]; 

Luego, en su StyleSheet.m aplicar

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