Я пишу собственный NSControl с пользовательскими NSCells. Это элемент управления, поэтому он должен реагировать на мышь. Я создал NSTrackingArea над своим элементом управления, реализовал -mouseEntered:
, -mouseExited:
и -mouseMoved:
. (И мне придется реализовать -mouseUp/Down:
, но я понятия не имею, что там делать, поэтому пока я еще не переопределил эти методы.) В этих методах я успешно определяю, в какой ячейке в данный момент находится мышь. Теперь у меня два вопроса:
- Это хороший подход для отслеживания мыши? Если нет, что мне делать вместо этого?
- Какой метод я должен вызывать на своем NSCell при щелчке мыши, когда мышь входит в ячейку, когда мышь покидает ячейку и т. д.? Документы Apple не очень ясны по этому поводу.
Итак, по сути: Когда я должен вызывать какой метод на моем NSCell, чтобы он реагировал на события мыши?
EDIT:
Перечитывая документы, я думаю, что мне следует позвонить NSCell -trackMouse:inRect:ofView:untilMouseUp:
и переопределить -startTrackingAt:inView:
, -continueTracking:at:inView:
и -stopTracking:at:inView:mouseIsUp:
. Снова два вопроса: 1) документы создают впечатление, что они вызываются только тогда, когда мышь не работает. Это правильно? Тогда что мне делать вместо этого? 2) Где/когда я должен позвонить в NSCell -trackMouse:inRect:ofView:untilMouseUp:
?