Что я хочу делать
У меня есть круговой настраиваемый подкласс NSView, и я хочу изменить внешний вид курсора, когда указатель мыши находится над круговыми частями представления, но не над частями прямоугольника представления, выходящими за пределы круга.
Вот иллюстрация. Я бы встроил его в тег изображения, но я слишком новичок, чтобы пользоваться такими замечательными функциями.
Что я знаю на данный момент
Я знаю, как изменить внешний вид курсора через NSCursor. Я думаю, что лучший способ добиться этого для прямоугольного представления - использовать прямоугольник курсора. Я знаю, что могу получать события mouseMoved (и должен отключать их, когда указатель мыши не находится над этим представлением, используя mouseEntered и mouseExited), и у меня есть простой и недорогой способ определить, находится ли точка в интересующей области.
Так в чем же тогда проблема?
Насколько я могу судить, система не отправляет события mouseMoved в представление, которое не является первым респондентом. Следовательно, если я хочу получать события mouseMoved при наведении указателя мыши на мое представление, мне нужно украсть статус firstResponder у того, у кого он в данный момент есть. Если текстовое представление имеет фокус, простое наведение мыши на такое представление украдет его, что просто неприемлемо с точки зрения удобства использования.
Поэтому мой вопрос сводится к следующему: есть ли способ лучше? Могу ли я получать события mouseMoved, не будучи первым респондентом?
Спасибо!
Я бы добавил следующие теги: custom-views mouse-events NSCursor firstResponder Но опять же, я новичок в SA, поэтому не могу.