2012-04-02 31 views
0

を使用していくつかのリンクを表示するには、NSTextViewNSAttributedStringを使用しています。私はこれらのリンクのスタイルをのsetLinkTextAttributes:の方法で行っています。しかし、ユーザーがリンクをクリックしたときに、ユーザーがマウスの左ボタンを押している間にリンクの色を変更するなどして、ユーザーに視覚的フィードバックを与えたいと思います。それを行う簡単な方法はありますか?NSTextAttachmentを使用する必要がありますか?NSTextViewとハイライト表示のリンク

+0

代わりに、いつも 'WebView'を使うことができます。それで、好きなようにリンクをスタイルすることができます。 –

+0

同時に複数の 'NSTextView'が表示されるので、パフォーマンス上の理由から' WebView'を使用したくありません。 – mplappert

答えて

3

mouseDownイベントで発生させたい場合は、これを行う簡単な方法はないと思います。クリックが完了するまで待つことができる場合は、テキストビューの委譲メソッドtextView:clickedOnLink:atIndex:を使用して、クリックされたリンクのインデックスを取得できます。そのインデックスを使用して、テキストストレージメソッドのattributesAtIndex:effectiveRange:にリンクの範囲を渡し、最後にsetAttributes:range:を使用して、リンクの属性に変更を加えることができます。

実際にmouseDownで行う必要がある場合は、テキストビューをサブクラス化してmouseDownをオーバーライドし、characterIndexForPointのようなものを使用する必要があります:リンクをクリックして上記のように応答したかどうかを調べる。

関連する問題