Нестандартная зона слежения в какао
Как создать произвольную область отслеживания в какао? В какао я мог только найти прямоугольники в качестве области отслеживания.
Carbon предоставил эту функцию через HIViewNewTrackingArea, с помощью которого любой HIShapeRef может быть зарегистрирован как область отслеживания. Есть ли у нас что-то похожее на это в какао?
У меня сложная форма, в которой я хочу менять курсоры мыши в разных регионах.
Один из подходов, которые я попробовал, заключался в создании большого прямоугольника отслеживания, охватывающего всю область, а затем в изменении курсора с помощью событий mouseMoved.
Не могли бы вы предложить какой-либо другой способ сделать это.
Было бы проще, если бы в какао был похожий API, например HIViewNewTrackingArea.
Благодарю.
1 ответ
Области отслеживания являются только прямоугольными в рамках Какао. Вы можете покрыть всю свою область, а затем создать NSBezierPath (который вы сохраняете, но не обводите и не заполняете) и спрашивать, находится ли точка внутри него через -containsPoint:.
Область отслеживания "активирует" отслеживание мыши, в то время как путь обеспечивает ваш собственный механизм обнаружения попаданий.