2011-06-27 7 views
1

私はクリック可能なテキストを描画しようとしています。 drawRectでテキストを描画するときにNSButtonを使用しないようにしようとしていて、drawRectでNSButtonを使用すると、drawRectを呼び出すたびにすべてのサブビューを削除しない限り、drawRectにNSButtonを追加します。Cocoa Drawing Clickable Text

私はNSButtonを作成しようとしましたが、サブビューとして追加する代わりに、テキストを描画する[myBtn.cell drawTitle:withFrame:inView:]を呼び出していますが、クリックできません。

(drawInRectのような方法で)テキストを描画する方法はありますか?ただし、テキストをクリック可能にする方法はありますか?

そうでない場合は、何をお勧めしますか?標準のNSButtonを使用し、毎回すべてのサブビューをクリアしますか?

答えて

1

これまで私がこれまで行ってきた方法の1つは、NSAttributedStringを使用することです。クリック可能な部分は何らかの形で変更する必要があります(つまり、別のNSForegroundColorAttributeNameNSUnderlineStyleAttributeName)し、NSLinkAttributeNameを付けてNSURLを付けます。

私の記憶が正しければ、私はこれはこれを行いNSTextFieldサブクラスであると考えている:DSClickableURLTextField

私はあなたのためにこれを行いますのAppKitで物事がたくさんあるので、テキストを自分で描くないをお勧めします。なぜあなたはそれを自分で描く必要がありますか?

+0

drawRectにサブビューを追加すると、drawRectを実行するたびにサブビューをクリアするか、または複数のサブビューを重ねて表示する必要があるということが主な理由です。私はそれがdrawRectで私のテキスト/ラベルをやっていないはずだということになると思います...それはおそらく "正しい"解決策です。 – kdbdallas

+0

@kdbdallas私の一般的なルールは、あなたのために、それを聞かせてください。 :) –