2009-07-23 8 views
7

私が望むのは、私のviewControllerに単純なテキストを表示し、ハイパーリンクをオートパarsしたものです。ユーザーがリンクをクリックすると、何らかの方法でコールバックを行い、URLで何かできることができます。どうすればこれを達成できますか?TTStyledTextLabelの使い方は?

私はすでにTTCatalogを何時間も見てきました。私はスタックトレースを見るだけでなく、three20のソースコードを調べることも試みました。助け無し。私のアプリがURLのクリックにどのように反応するかを知ることはできません。何かヒントをお願いしますか?

+1

を実装しますか? WebViewでリンクをクリックすると、UIWebViewDelegate getStartLoadWithRequestメッセージ – oxigen

答えて

11

すでに試したものを見ずに手助けするのは難しいが、あなたは、次のような何かを行うことができるはず:

あなたは、その後の特定のコントローラに custom-uri://some/urlをマップするために TTNavigatorTTURLMapを使用することができます
TTStyledTextLabel* label = [[[TTStyledTextLabel alloc] 
     initWithFrame:someFrame] autorelease]; 
NSString* labelText = @"This should <a href=\"custom-uri://some/url\">work</a>"; 
label.text = [TTStyledText textFromXHTML:labelText lineBreaks:NO URLs:YES]; 
[someView addSubview:label]; 

アプリケーションを作成するか、アプリケーション代理人が自分で処理します。その方法を知る最も良い場所は、Three20ソースに含まれているTTNavigatorDemoサンプルアプリケーションを調べることです。具体的には、すべてのURLマッピングが行われるAppDelegate.mを参照してください。

+0

素晴らしいスタート! URLをクリックしたときにTTNavigatorとTTURLMapを使用してコントローラをプッシュする方法の簡単な例を挙げられますか? – erotsppa

+0

私は、URLマッピングの仕組みがどのように働いているかを調べるために、あなたの正しい方向を指すように答えを更新しました。 –

+0

このURLマッピングシステムは、この質問に対して正しく機能しませんでしたか? URLは開発者によって事前設定されていなければならず、ユーザーが指定したテキストでは機能しません。私は、TTStyledTextLabelにユーザからのテキストを表示し、すべてのハイパーリンクを解析して、同じアクションを1つだけ実行するようにします。 – erotsppa

0

NathanがURLマッピングやリンクについて語っていることに加えて、CSSスタイルを使用することもできます。あなたがのUIWebViewを使用していないのはなぜ

TTStyledTextLabel* label = [[[TTStyledTextLabel alloc] initWithFrame:someFrame] autorelease]; 
NSString* labelText = @"This should <a href=\"custom-uri://some/url\">work</a> and 
<span class=\"redText\">this should be red</span>"; 
label.text = [TTStyledText textFromXHTML:labelText lineBreaks:NO URLs:YES]; 
[someView addSubview:label]; 

は、その後、あなたのStyleSheet.mに

- (TTStyle*) redText { 
    return [TTTextStyle styleWithFont:[UIFont systemFontOfSize:12] color:RGBCOLOR(255,0,0) next:nil]; 
}