Как эффективно установить курсор для NSView? - PullRequest
1 голос
/ 09 сентября 2010

У меня есть NSView, который рисует коллекцию управляемых объектов приложения неправильной формы (и перекрывающихся): это, очевидно, не может быть описано эффективным использованием непересекающихся прямоугольников.

Я хочу изменить курсор, когда он над одним из этих объектов. Кажется, что обычный метод заключается в настройке отслеживания каналов в ответ на -(void)resetCursorRects, каждый из которых связан с отдельным курсором, но я не могу применить это к этой ситуации.

При обработке сообщений -(void)mouseMoved:(NSEvent *)theEvent я знаю, какой объект находится выше всего под курсором, поэтому мне нужно изменить курсор.

Это уместно? Когда NSView попытается установить курсор на обычную стрелку? Я не хочу заканчивать мерцающим курсором, потому что NSView устанавливает его по умолчанию для другого сообщения.

1 Ответ

6 голосов
/ 09 сентября 2010

Рассмотрите возможность использования отслеживания областей : Использование объектов области отслеживания . В частности, NSTrackingCursorUpdate. Таким образом, вы можете реагировать конкретно на отдельные типы отслеживания событий. Я думаю, что это помогает избежать ситуации, которую вы описали.

...