2009-06-27 5 views
0

私は作業しているCocoaエディタにいくつかの基本的なタブを実装しようとしています。私は、NSSegmentedControlを使用して、それにタブとしてセグメントを追加しています。私は、カスタムのNSSegmentedCellサブクラスを使用して、タブを閉じるためのテキストの隣に小さな 'x'アイコンを描き、それまではかなりスムーズになっています。NSSegmentedCellサブクラスのマウスイベント?

しかし、誰かが「x」アイコンをマウスでクリック(またはクリック)したかどうかを確認するために、タブのマウスイベントを実際に処理する方法を理解できません。私はNSSegmentedControlのサブクラスで "mouseMoved"をオーバーライドしようとしましたが、新しいセグメントを追加すると呼び出されるのが止まってしまいます(awakeFromNibのsetAcceptsMouseMovedEventsをyesに設定しました。 )。 NSCellのサブクラスであるNSSegmentedCellsは、コントロールがクリックされたときにのみトリガされるマウストラッキング以外に、マウスイベント処理を持たないようです。

NSSegmentedControlまたはNSSegmentedCellサブクラスのいずれかでマウスイベントを正しく処理するにはどうすればよいですか?

+0

私はNSSegmentedCellを描画するために使用しているコードに興味があります。あなたはそれを共有してもらえますか? –

+0

ここに行きます。クローズボタンのハイライト状態はコントローラーで実際に設定されているため、ちょっとハッキリですが、正常に動作しますが、動作します。 http://nopaste.com/p/aAde6sZw4 – toastie

答えて

2

NSTrackingAreaをご覧ください。 NSSegmentedControlに追跡エリアを追加し、その上にマウスが入力されたイベントを取得して閉じるボタンを強調表示することができます。

クリックイベントを取得するには、閉じるボタンに別のNSActionCellサブクラスを使用してヒットテストを行うのが最良でしょう。

関連する問題