У меня есть проблема, которую, я думаю, можно решить с помощью некоторых хакеров, но мне очень любопытно, есть ли более простой способ выполнить работу без необходимости делать все это.
У меня естьстек NSViews (на уровне слоя, если это как-то помогает, предоставляет какое-то лучшее решение), как показано ниже:
Дело в том, что это по сути меню, нопарить чувствительны к регистру.Если пользователь наводит курсор на одну из открытых частей представлений нижнего уровня, мне нужно выполнить действие в зависимости от того, что это за представление.Это динамическая система, поэтому количество таких пунктов меню может меняться, что усложняет статические вычисления.Как вы можете видеть, они в основном все являются копиями (по форме) первого элемента, но затем немного поворачиваются по мере продвижения вниз по стеку с помощью простого преобразования преобразования.
Мой вопрос к SO-сообществуЧто вы думаете, что лучший подход к получению mouseEntered: и mouseExited: события только для буквально видимых частей этих представлений?
Что я пытался сделать, это использовать NSTrackingArea на части visibleRect этих представленийЭто звучит гораздо удобнее, чем на самом деле в этой ситуации.В действительности visibleRect кажется «видимым» для них всех, все время.Ничто явно не блокируется и не скрывается ничем иным, как частично перекрывающимся NSView.Все, что происходит, это то, что я получаю спам-консоль от всех видов, кричащих сразу, что мышь вошла в их прямоугольник.
Что-то, что я рассматриваю, - это создание вспомогательного NSView для каждого пункта меню и чтобы каждый из них былответственный за область отслеживания ... каждый пункт меню имеет вид "полосы" вдоль правой и нижней сторон, который может сообщать, но это все же немного хак и нехорошо.
У кого-нибудь есть идея получше?Возможно один из опыта?
Спасибо!