События Mouse Enter/Exit на частично скрытых NSViews

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

У меня есть стек NSViews (со слоями, если это каким-то образом поможет найти лучшее решение), как показано ниже:

The view stack/layout

Дело в том, что это по сути меню, но оно чувствительно к наведению. , Если пользователь наводит курсор на одну из открытых частей представлений более низкого уровня, мне нужно выполнить действие в зависимости от того, что это за представление. вычисления более сложные.Как вы можете видеть, они в основном все копии (по форме) первого элемента, но затем немного поворачиваются, чем дальше вы спускаетесь по стеку с помощью простого поворота преобразования.

Мой вопрос к SO community - это то, что вы все считаете лучшим подходом к получению событий mouseEntered: и mouseExited: только для буквально видимых частей эти взгляды?

Что я попытался сделать, так это использовать NSTrackingArea в части visibleRect этих представлений, что звучит намного удобнее, чем на самом деле в этой ситуации. В действительности, visibleRect кажется "видимым" для всех из них все время. Ничто явно не заблокировано или скрыто ничем, кроме частично перекрывающегося NSView.Все, что происходит, это то, что я получаю заспамленную консоль со всех представлений, кричащих сразу, что мышь вошла в их прямоугольник.

Что-то, что я рассматриваю, это создание под-NSView для каждого пункта меню, и чтобы каждый из них отвечал за область отслеживания... каждый пункт меню имел "полосное" представление вдоль правой и нижней сторон, которые могли бы сообщать, но это все еще немного взломано и неприглядно.

У кого-нибудь есть идея получше? Может, из опыта?

Спасибо!

5
задан clstroud 3 April 2012 в 02:16
поделиться