アプリケーションの非常に中心的な部分として NSTableView があり、残りの部分とさらに統合したいと考えています。1 つの列 (リスト) しかなく、すべてのセル (通常の NSTextFieldCells) を自分で描画します。
最初の問題はハイライトです。自分でハイライトを描いて、青い背景を取り除きたいです。セル全体を元の背景色で塗りつぶして青い背景を非表示にしましたが、セルをドラッグすると見栄えが悪くなります。NSCell のオーバーライドを試みhighlight:withFrame:inView:
ましhighlightColorWithFrame:inView:
たが、何も起こりませんでした。自動強調表示を無効にするにはどうすればよいですか?
また、NSTableView の外のどこかをクリックしたときに、すべての行/セルの選択を解除したいと考えています。選択したセルの背景/ハイライトが灰色になるため、これにはイベントが必要ですが、見つかりません。ダブルクリックでセルを展開しますが、元に戻す必要がある場合があります。そのため、灰色のハイライトを取り除くだけでは不十分です。
編集:セルがダブルクリックされresignFirstResponder
、NSTableView が呼び出されたときに、サブビューを NSTableView に追加します。私はこれを試しました:
- (BOOL)resignFirstResponder
{
if (![[self subviews] containsObject:[[self window] firstResponder]])
{
[self deselectAll:self];
...
}
return YES;
}
機能していないことに加えて、ビュー階層内のすべてのオブジェクトに対してこのメソッドを実装する必要があります。ファーストレスポンダが特定のビュー階層を離れたときを見つけるための他の解決策はありますか?