Я создаю свой пользовательский NSView при нажатии на определенную кнопку, и я хочу закрыть это пользовательское представление, если ваш клик за пределами NSView. Но, похоже, я не смог получить событие mouseDown в этом пользовательском NSView. Кто-нибудь знает, как это сделать? Большое спасибо.Как я могу обнаружить событие mouseDown вне моего NSView?
ответ
Вы хотите использовать глобальный монитор событий NSEvent. Тогда вам может потребоваться преобразовать мышь NSPoint в координаты вашего вида и использовать функцию NSPointInRect, чтобы увидеть, внутри она или нет.
Я хотел поделиться двумя другими решениями, которые в отличие от подхода NSEvent не имеют ограничений для песочницы.
Крышка окна. Это более привлекательный код и хорошее упражнение в изучении того, что возможно с окнами и видами. Но стоит учиться и знать.
Создайте окно без полей, которое занимает весь экран. Окно без полей может обрабатывать события мыши.
Район слежения. Этот подход аналогичен
песочница ограничение? – eonist
Вы можете столкнуться с проблемами в песочнице, пытаясь использовать глобальный монитор событий или CGEvent для событий вне вашего приложения. Если вы изолированы. – uchuugaka
Имеет смысл, иначе можно заглянуть в регистраторы ключей/мышей. Вместо этого я использую локальный монитор событий. И затем используйте windowDidResize(), чтобы вызвать щелчок мыши за окном. Я предполагаю, что можно было бы зарегистрировать NsEvent.mouseLocation, когда это событие произойдет, и все равно передать требование к песочнице приложения. – eonist
- 1. Rubymotion: как я могу определить событие mouseDown для NSView?
- 2. Disable NSView mousedown
- 3. Как захватить событие mouseup вне элемента mousedown?
- 4. Как обнаружить событие touchhend вне элемента
- 5. Обнаружить событие mousedown на элементах холста
- 6. захват MouseDown событие вне элемента JQuery
- 7. NSView Cocoa, получающий безумные события mouseDown?
- 8. Как обнаружить событие касания вне навигационного ящика
- 9. Как я могу обнаружить событие закрытия FireFox?
- 10. Как я могу обнаружить событие касания UIImageView
- 11. Как обнаружить событие касания вне границы действия
- 12. Как заблокировать события NSView под другим NSView?
- 13. mouseMoved событие для NSView
- 14. обнаружить мышь за пределами элемента mousedown
- 15. Как я могу обнаружить взаимодействие где-либо вне UIControl, неинвазивно?
- 16. Как я могу обнаружить сфокусированный EditText вне моего приложения в android?
- 17. Определение того, какой экземпляр NSView инициировал mouseDown:
- 18. Как запустить событие mousedown программно?
- 19. Обнаружить событие mousedown/click на панели прокрутки браузера
- 20. Событие Mousedown, подавляющее событие фокуса?
- 21. Событие MouseDown для NSButton?
- 22. Как получить событие «mousedown» на OpenLayers.Map?
- 23. Как я могу обнаружить нажатую кнопку мыши над PictureBox?
- 24. Обнаружить MouseUp после выхода из MouseDown Control
- 25. Событие NSButton Mousedown
- 26. Событие MouseDown для кнопки
- 27. Я пытаюсь заставить mouseup событие после mousedown
- 28. Как я могу отменить свой CountDownTimer вне моего метода?
- 29. Как я могу создать папку шаблона вне моего проекта Django
- 30. Как я могу вставить границу вне моего кругового изображения?
Вы можете пролить некоторый пример кода здесь? –
В руководстве по программированию NSEvent приведен пример кода в документах, показывающих, как это сделать. – uchuugaka
Опубликовать пример кода на github завтра. – uchuugaka