ビューベースNSTableView
があります。表の各ビューにはカスタムテキストフィールドがあります。mouseDown:NSTableView内のカスタムNSTextFieldに
ユーザーがテーブルのビュー内でテキストフィールド(ラベル)をクリックしたときにアクションを起こしたいと思います(各テーブルセルでカスタムアクションを持つハイパーリンクがあるとします)。
マウスイベントを捕捉するためのサブクラスNSTextField
を作成しました。ただし、最初のクリックではなく、2回目のクリックでのみ発生します。
私はNSButton
を使ってみましたが、すぐに発火しました。ここで
は、カスタムラベルのためのコードです:
@implementation HyperlinkTextField
- (void)mouseDown:(NSEvent *)theEvent {
NSLog(@"link mouse down");
}
- (void)mouseUp:(NSEvent *)theEvent {
NSLog(@"link mouse up");
}
- (BOOL)acceptsFirstResponder {
return YES;
}
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent {
return YES;
}
@end
ありがとう、私はそれを試みます。 1つの質問:最初のクリックはNSButtonで動作します(テーブル行はその場合選択されません)。その動作をエミュレートする方法はありますか? – Mark
おそらくありますが、わかりません。私はacceptsFirstMouseおよび/またはacceptsFirstResponderに対してYESを返すとそのことが行われていると思います。 – rdelmar
ボタンを使用した場合の動作を確認するには、ボタンを使用するだけではいかがですか?あなたは境界線をオフにすることができ、とにかく境界線のないラベルのように見えます。境界線が必要な場合は、境界線のないボタンをNSBoxに埋め込むことができます。 – rdelmar