TTNavigator не открывает URL при нажатии на ссылки в TTStyledTextLabels

Попытка заставить простую работу щелчка ссылки работать. Я думаю, что понимаю 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 ответ

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

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

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

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

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

[navigator.window makeKeyAndVisible];
Другие вопросы по тегам