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