Я знаю, что этот вопрос уже задавался здесь в нескольких формах, но, к сожалению, не предлагаемые решения работали для меня.
Я реализую функцию multi-touch для моего приложения osx
.
Моя проблема:
мне нужно разрешить местоположение на экране, описываемую NSPoint
в координатах экрана, на самом верху NSView
объекта из моего приложения, который находится под это место (если таковые имеются).
Это немного похоже на HWND WindowFromPoint(Point)
под Windows
OS.Найти самый верхний объект NSView, расположенный под позицией NSPoint
несколько моментов, чтобы рассмотреть следующие вопросы:
- Мое приложение управлять несколькими
NSWindow
с, где каждое окно содержит иерархию из несколькихNSView
с, NSView
, что я заинтересован в это не обязательно приложениеKey Window
илиMain Window
, так как это может быть любой из моих других в настоящее время неактивных объектовNSView
, которые находятся под этим расположением экрана,- Это возможно, что под конкретным
NSPoint
у меня будет больше одногоNSWindow
с и/илиNSView
с. В этом случае я WLL быть заинтересован только в самом верхнем наиболееNSView
, - Вполне возможно, что
NSView
А на вершинеNSView
B, частично скрывая его, ноNSPoint
место присутствует только на B, который не является самое верхнее окно приложения (но только самое верхнее для этого местоположения). И здесь я буду заинтересован в B.
вещей, которые мне удалось TODO:
- Enumerate
NSApp
для всех окон (NSApp.windows
), - Перечислите
NSWindow
для своих взглядов (NSWindow.contentView.subviews
) , - Перечень
NSView
для подсетей (NSView.subviews
)
Выполнение этого Мне удалось перечислить все приложения NSView
s, но мне по-прежнему необходимо отфильтровать ненужные NSView
s, которые не видны.
Вещи, которые не работа для меня:
NSView.hitTest
вернулсяnil
для действительных местах,NSView.layer.zPosition
alwyas равен нулю (0),- Порядок
NSView.subviews
списка также не reflacts текущий макет графического интерфейса пользователя, - Тестирование, если
NSView
Видимость также di d не помогает, поскольку возвращает true, если это окно скрыто другим окном.
Моя среда: Mac
, OSX El-Capitan
, XCode-7
, Cocoa
, Objective-C
Спасибо за любую помощь!
Пазо
К какому виду вы отправляете 'hitTest'? – Willeke
Для каждого перечисляемого NSView. т. е. - все объекты NSView в моем приложении afaik. Все вернут 'nil' ... – PazO
Вызов' hitTest: '' window.contentView' должен быть достаточным. Вы преобразуете координаты точки в окно? – Willeke