カスタム NSTableRowView でビューベースの NSTableView を使用しています。trackingAreas を使用してマウスの位置に基づいて、drawBackgroundInRect を介してカスタム行の背景描画を使用したいと思います。目標は、マウスが現在ホバリングしている選択されていない行のカスタム背景を描画することです。
これは、WWDC 2011 セッションのView Based NSTableView Basic to AdvancedのHoverTableView の例とほぼ同じです。右側のアカウント タイプ テーブル ビューの [メール、連絡先、およびカレンダーのシステム環境設定] ペインで、その動作を確認できます。
例とは異なり、テーブル ビューには何千もの行があります。テーブル ビューをすばやくスクロールしない限り (たとえば、トラックパッドを介して 2 本指でフリック)、すべてが例のように機能します。この場合、 updateTrackingAreas が十分に速く呼び出されていないようです。マウスの下でスクロールする行は強調表示されますが、マウスが追跡領域を離れたことは通知されないため、強調表示されたままになります。その結果、マウス オーバー ハイライトを示す複数の行が作成され、再利用キューにより、これらはテーブル ビューの一方の端からスクロールされて、もう一方の端に再表示されます (もちろん、異なるデータを使用して) マウス オーバーのようにハイライトされたままです。 . ゆっくりとスクロールすると、問題が解消されます。しかし、何千もの行をスクロールすることを期待していることを考えると、ゆっくりスクロールすることは期待されるユーザーの動作ではありません。
NSTrackingAreaOptions のさまざまな組み合わせを試してみましたが、うまくいきませんでした。この問題を解決するための提案をいただければ幸いです。