2009-07-26 8 views
0

私は、テキストにURLがあるかもしれないアプリケーションにテキストを表示しようとしています。 URLをハイパーリンクとしてハイライト表示し、クリック可能にします。さらに、クリックするとカスタムアクションを実行できるコールバックを提供したい。もちろん、URLは私のコールバックに戻されるべきで、私はそれをどうするかを知っています(例えば、アプリ内のブラウザなどで開く)。クリックのためのアクションを制御できるクリック可能なハイパーリンクでテキストをレンダリングするにはどうすればよいですか?

これは複雑に聞こえるかもしれませんが、アプリストア(30以上)のすべてのIMアプリは、ユーザーがURLを含むIMを送信し、受信側がそのページをクリックしてページを開くことができるこの機能を備えていますアプリ内ブラウザ

これはどのように行われますか?私はそれを理解できません。解決策がある場合は、サンプルコードを提供してください。ありがとうございます。ところで


:(それの複数のインスタンスをレンダリングすることが非常に遅いので)

答えはのUIWebViewではありません。

回答はではありませんUITextView URLを解析することはできますが、クリック時にカスタムコールバックを設定することはできないためです。だから、それはちょうどサファリを開くことに終わります。それはURLを解析し、それにカスタムアクションを割り当てることができるが、それはURLMapに予め割り当てする必要があるため

答えはもありませんTTStyledTextLabelです。そして明らかにこの場合、私たちはURLが手前にあるかどうかわかりません。私の知る限り、あなたはカスタムURLにすべてのURLを割り当てることはできません。

alt text http://img169.yfrog.com/img169/3373/picture1ufx.png

答えて

3

あなたが知っている限り、カスタムURLにすべてのURLを割り当てることはできません。

私はあなたのother SO questionであなたに指示を与えたので、私はあなたがそれがこの正確な質問に答えので、私はにリンクされているソースを読んでいない理由として少し困惑しています。 TTURLMapはキャッチオールを「-from:toViewController:selector」メソッドでサポートしています。たとえば:あなたは完全に文書化されていないライブラリを扱ったが、Three20ライブラリがうまくあなたがしている正確に何をすべきかのサンプルアプリケーションを含むのポイントに文書化さ非常にある場合

[map from:@"*" toViewController:[ViewController class] 
     selector:@selector(someHandler:)]; 

私は混乱を理解したいです後に。

0

これは複雑に聞こえるかもしれませんが、基本的には(それらの30を超える)AppStoreですべてのIMアプリケーションは、ユーザーがURLを含むIMと受信側を送信することができ、この機能をオンにクリックすることができていそれをアプリ内ブラウザで開きます。

ただし、カスタムコールバックが必要なので、これは別の機能です。 UITextViewを使用している可能性があります。

おそらくコードを自分で書く必要があります。テキストのレンダリングとリンクの検出、またはTTStyledTextLabelの修正(どちらの場合でも、開始するのに適していると思われます)。私は似たようなことをして、どんなリンクでもUIButtonsを作成します。リンク検出コードについては、Adiumのソースを参照してください。

関連する問題