Как получать щелчки мыши в подклассе NSTableCellView?

Я создал подкласс NSTableCellView, чтобы сделать пользовательский рисунок. Когда для стиля выделения элемента NSOutlineView установлено значение Нет, мое представление получает события mouseDown.
Когда я изменяю стиль выделения элемента NSOutlineView на Обычный, мое представление больше не получает событие mouseDown. События.

Как я могу передать события mouseDown моему представлению, сохраняя при этом обычный стиль выделения представления схемы?


person Mike T    schedule 05.01.2014    source источник
comment
Любые подпредставления в NSTableCellView или вы следите за кликами, непосредственно переходящими к этому представлению?   -  person Jay    schedule 05.01.2014


Ответы (1)


По-видимому, NSTableView переопределяет -hitTest:, чтобы реализовать выбор строки/перетаскивание/и т. д. функциональность — это объяснило бы, почему у вас не возникает проблем, когда выбран стиль выделения Нет.

Согласно Документы Apple:

Указание того, как подпредставления должны реагировать на события

[...] Если вы создаете подкласс табличного представления, вы можете переопределить validateProposedFirstResponder:forEvent:, чтобы указать, какие представления могут стать первыми ответчиками. Таким образом, вы получаете события мыши.

Или, опционально... если обработка событий жизненно важна для вашего подкласса: почему бы не создать подкласс NSControl?
Согласно той же документации, существует специальная обработка для элементов управления, уже реализованных в классе представления стандартной таблицы.

person Jay    schedule 05.01.2014
comment
Вот и все. В моем подклассе представления схемы я переопределяю validateProposedFirstResponder:forEvent: для возврата YES, когда ответчик является моим подклассом NSTableCellView. Большое тебе спасибо. - person Mike T; 05.01.2014