TTNavigator не открывает URL при нажатии на ссылки в TTStyledTextLabels - PullRequest
2 голосов
/ 03 февраля 2010

Попытка заставить работать щелчок простой ссылки. Я думаю, что понимаю TTNavigator и TTStyledLabel, но не могу заставить его работать.

Код:

@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

То есть внутри viewcontroller, получите навигатор и установите self в качестве его делегата. Когда ссылка открыта, вызывается метод mustOpenURL delgate, где я буду самостоятельно обрабатывать URL-адрес. (Я планирую позволить навигатору обрабатывать больше, но сначала хочу, чтобы этот простой случай работал.)

У меня есть тестовый вызов в конце viewDidLoad, который прекрасно запускает метод делегата.

Проблема: я вижу, что styledTextLabels прекрасно отображается с URL-адресами, но когда я нажимаю на них, ничего не происходит. По какой-то причине они не достигают TTNavigator, и я не могу понять почему. Такое ощущение, что я где-то упускаю простое соединение / строительные леса, но не могу понять.

Как сделать так, чтобы ссылки, вставленные в стиль текста, достигали делегата навигатора? Или как еще мне реализовать этот простой случай с помощью styledtextlabel? (просто хочу получить обратные вызовы для переходов по URL).

1 Ответ

0 голосов
/ 17 февраля 2010

попробуйте установить свойство окна:

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

Если у вас его нет, вы можете добавить один

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

Вам также может понадобиться:

[navigator.window makeKeyAndVisible];
...