Нестандартная зона слежения в какао

Как создать произвольную область отслеживания в какао? В какао я мог только найти прямоугольники в качестве области отслеживания.

Carbon предоставил эту функцию через HIViewNewTrackingArea, с помощью которого любой HIShapeRef может быть зарегистрирован как область отслеживания. Есть ли у нас что-то похожее на это в какао?

У меня сложная форма, в которой я хочу менять курсоры мыши в разных регионах.

Один из подходов, которые я попробовал, заключался в создании большого прямоугольника отслеживания, охватывающего всю область, а затем в изменении курсора с помощью событий mouseMoved.

Не могли бы вы предложить какой-либо другой способ сделать это.

Было бы проще, если бы в какао был похожий API, например HIViewNewTrackingArea.

Благодарю.

1 ответ

Решение

Области отслеживания являются только прямоугольными в рамках Какао. Вы можете покрыть всю свою область, а затем создать NSBezierPath (который вы сохраняете, но не обводите и не заполняете) и спрашивать, находится ли точка внутри него через -containsPoint:.

Область отслеживания "активирует" отслеживание мыши, в то время как путь обеспечивает ваш собственный механизм обнаружения попаданий.

Другие вопросы по тегам