単純なリンク クリック アクティビティを機能させようとしています。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 をそのデリゲートに設定します。リンクが開かれると、shouldOpenURL デリゲート メソッドが呼び出され、ここで自分自身で URL を開く処理を行います。(ナビゲーターにもっと処理させる予定ですが、最初にこの単純なケースを機能させたいと考えています。)
viewDidLoad: の最後にテスト呼び出しがあります。これにより、デリゲート メソッドが正常に起動されます。
問題: styledTextLabels が URL で適切にレンダリングされているのを確認できますが、それらをタップしても何も起こりません。なんらかの理由で TTNavigator に到達せず、その理由がわかりません。単純な接続/足場がどこかに欠けているように感じますが、それを理解できません。
styledtextlabel でタップされたリンクがナビゲーター デリゲートに到達するようにするにはどうすればよいですか? または、styledtextlabel を使用してこの単純なケースを他にどのように実装すればよいでしょうか? (URLタップのコールバックを取得したいだけです。)