У меня есть следующий вид:
![Screenshot](https://i.stack.imgur.com/bOAcR.png)
, который имеет собственный класс, основанный на NSVisualEffectView
, и содержит представление изображения, метку (NSTextField
) и всплывающая кнопка.isFlipped
пользовательского представления всегда равно false
.
Пользовательское представление также содержит NSClickGestureRecognizer
, в котором используется делегат.Делегат реализует только один метод:
func gestureRecognizerShouldBegin(_ gestureRecognizer: NSGestureRecognizer) -> Bool {
let thePoint = gestureRecognizer.location(in: view)
if let theView = view.hitTest(thePoint) {
return !theView.handlesMouseEvents
}
else {
return true
}
}
Если я щелкну в середине всплывающего меню, location(in:)
возвращает значение (182, 16), например.Это кажется правильным для меня без переворота.Но hitTest()
возвращает фоновое представление для этой точки как результат, а не всплывающую кнопку.
Что я делаю не так?
Если я использую точку перевернутого вручную (y := height - y
) дляв результате тестирования я получаю всплывающую кнопку.Но я не хочу использовать этот подход, потому что он кажется мне уродливым.
Если мне кажется, что это работает, если я использую представление содержимого окна для тестирования попаданий.Но я все еще хотел бы знать, почему показанный подход не работает.