2010-02-03 13 views
2

Vous essayez de créer un lien simple en cliquant sur l'activité. Je pense que je comprends TTNavigator et TTStyledLabel, mais je n'arrive pas à le faire fonctionner.TTNavigator n'ouvrant pas d'URL lorsque vous cliquez sur des liens dans TTStyledTextLabels

code:

@interface SomeVc : UIViewController <TTNavigatorDelegate> { 
    IBOutlet TTStyledTextLabel *styledTextLabel; 
} 

@end 

@implementation SomeVc 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    navigator = [TTNavigator navigator]; 
    navigator.persistenceMode = TTNavigatorPersistenceModeNone; 
    navigator.delegate = self; 
    TTURLMap* map = navigator.URLMap; 
    [map from:@"*" toViewController:[TTWebController class]]; 

    styledTextLabel.text = [TTStyledText textWithURLs:someText];   

    [navigator openURLAction:[TTURLAction actionWithURLPath:@"http://www.cnn.com/"]]; 
} 


- (BOOL)navigator: (TTNavigator*)navigator shouldOpenURL: (NSURL*)URL { 
    NSLog(@"trying to open %@", [URL absoluteString]); 
    return NO; 
} 

@end 

i.e. dans un viewcontroller, obtenir le navigateur et l'auto réglé pour être son délégué. Quand un lien est ouvert, la méthode de delgate de shouldOpenURL est appelée, où je traiterai l'URL s'ouvrant moi-même. (Je prévois de laisser le navigateur gérer plus de choses, mais je veux que ce cas simple fonctionne en premier.)

J'ai un appel de test à la fin de viewDidLoad: ce qui déclenche la méthode déléguée. Problème: Je vois que les styles de style sont rendus avec des URL, mais quand j'appuie dessus, rien ne se passe. Ils n'atteignent pas le TTNavigator pour une raison quelconque et je ne peux pas comprendre pourquoi. On dirait qu'il me manque quelque connexion/échafaudage simple, mais je n'arrive pas à le comprendre.

Comment faire en sorte que les liens tapés dans l'étiquette de style atteignent le délégué du navigateur? Ou comment pourrais-je implémenter ce cas simple avec styledtextlabel? (Veux juste obtenir callbacks pour les robinets d'URL.)

Répondre

0

essayer de définir la propriété de la fenêtre:

TTNavigator* navigator = [TTNavigator navigator]; 
navigator.window = window; 

Si vous n'avez pas, vous pouvez ajouter un

navigator.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] 

Vous pourriez aussi avoir besoin :

[navigator.window makeKeyAndVisible];