У меня есть прозрачный NSWindow
, который следует за экраном пользователя везде, куда он идет (NSWindow
остается перед каждым приложением, несмотря ни на что, даже полноэкранные приложения).
В этом NSWindow
у меня есть событие mouseDown
, которое показывает всплывающее окно. Скажем, я нахожусь в сафари в полноэкранном режиме, и у меня есть мое окно перед ним, я нажимаю на сафари, и я снова нажимаю на свое окно: ничего не происходит, mouseDown не происходит. Я должен снова щелкнуть, чтобы произошло событие mouseDown
.
Как я могу заставить мой NSWindow
быть всегда активным, поэтому мне не нужно нажимать на него 2x, чтобы вызвать mouseDown
, когда я нажму на фоновое приложение и снова закрою окно?
Спасибо!Как заставить NSWindow быть всегда активным/сфокусированным?
ответ
Если вы добавили экземпляр NSButton без полей в окно вашего окна и задали изображение как образ кнопки (и как его альтернативное изображение, чтобы сделать его более красивым), он будет работать из коробки: просто подключите действие кнопки метод для вашего делегата приложения (или объект, в котором вы хотите обработать действие щелчка). Щелчок на изображении (т. Е. Кнопка) затем вызывает метод действия кнопки, независимо от того, какое окно активно.
спасибо! это работает так, как я хотел! так просто и я не заметил. –
Я не уверен, если это именно то, что вы хотите (это не совсем окно в ширину установки), но, с documentation:
По умолчанию мышь вниз событие в окне не является ключевым окном просто приносит окно вперед и делает его ключевым; событие не , отправленное на объект
NSView
, по которому происходит щелчок мыши. ОднакоNSView
может требовать первоначальное событие мыши, переопределивacceptsFirstMouse:
, чтобы вернутьYES
.Аргументом этого метода является мыши вниз событие, которое произошло в неключевых окне, которое объект вида можно исследовать, чтобы определить, хочет ли он, чтобы получить событие мыши и потенциально стать первым ответчиком. Вы хотите, чтобы поведение этого метода по умолчанию было выполнено, например, в элементе управления, который влияет на выбранный объект в окне.
Однако, в некоторых случаях это целесообразно изменить это поведение, например, для управления, которые должны получать
mouseDown:
сообщения, даже когда окно неактивно. Примерами элементов управления, поддерживающих это поведение перехода по клику, являются кнопки заголовка окна .
Или вы могли бы попробовать возиться с
- (void)sendEvent:(NSEvent *)theEvent
и посмотреть, если вы можете обрабатывать события в пользовательском пути.
Я сделал некоторые исследования в документации, но я не смог найти что-нибудь, что сработало:/ –
DId вы пытаетесь сделать -приобретенияFirstMouse: return YES? Это сделало бы элементы управления незамедлительно пригодными для использования в вашем окне, даже если это не ключ, какие звуки похожи на то, что вы хотите. – Vervious
nop, не работает так, как я хочу. Я хочу, чтобы окно было активным/сфокусированным все время. –
Я думаю, что вам действительно нужно использовать NSPanel (плавающая палитра - особый вид NSWindow), который будет делать именно то, что вы хотите, в соответствии с ОС, а не пытаться бороться с предполагаемым поведением.
Вот документация NSPanel:
А вот некоторая полезная и содержательная информация:
http://cocoadev.com/wiki/NSPanel
По умолчанию, NSPanel исчезнет, когда приложение неактивно, но вы может отключить это.
Прошу прощения за то, что не выложил его более полно ... нажал на время.
Edit:
Обратите внимание, что вы, вероятно, может получить ваше окно вести себя как хотелось бы просто:
«NSView может претендовать на исходное событие мыши вниз, однако, перекрывая acceptsFirstMouse: вернуть YES. "
Вы должны будете сделать это с помощью любого подкласса NSView, чтобы пропустить «активации нажмите».
он ведет себя как nswindow. я должен коснуться его 2 раза, чтобы сфокусироваться после нажатия на фоновое окно:/ –
Это поведение по умолчанию, которое вы должны переопределить. Если вы посмотрите на просмотрщик системных символов - NSPanel - он принимает первый щелчок и остается впереди. См. Документы здесь: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/HandlingMouseEvents/HandlingMouseEvents.html – podperson
Это работает для меня, надеюсь, что будет полезно, Это будет держать окно всегда поверх всех приложений
[self.window makeKeyAndOrderFront:nil];
[self.window setLevel:NSStatusWindowLevel];
- 1. Как заставить NSWindow быть перед каждым приложением? Даже полноэкранные приложения
- 2. Как заставить переменную perl всегда быть испорченной?
- 3. NSWindow всегда сверху (или невидимо)
- 4. Заставить NSWindow оставаться активным, как NSAlert
- 5. nswindow не может быть центрирован
- 6. Переключение уровня NSWindow для поведения «всегда сверху»
- 7. Как заставить ех быть загружен всегда из памяти
- 8. Как заставить NSWindow действовать как листок обмена социальными сетями?
- 9. Как заставить imageSmoothingEnabled быть ложным
- 10. Как заставить файл всегда переопределяться?
- 11. Разрешить конкретное число экземпляров NSWindow быть видимым
- 12. Как заставить OS X установить начальное местоположение NSWindow
- 13. JSON encode. Заставить элемент всегда быть массивом PHP
- 14. Можете ли вы заставить MSI быть всегда администратором?
- 15. Как заставить PyCharm всегда показывать номера строк
- 16. Как заставить сокет быть неблокирующим
- 17. Как заставить JModelica быть спокойным?
- 18. Как заставить команду быть числовой
- 19. Как заставить div быть отзывчивым?
- 20. Как заставить Doctrine DateTime использовать всегда UTC?
- 21. Как заставить HTML-ссылку быть абсолютной?
- 22. Как заставить зарегистрированный «окружающий» объект быть разрешенным?
- 23. Как переопределить NSWindow?
- 24. Как заставить maven всегда загружать родительский pom
- 25. Как заставить 2 divs всегда совмещаться?
- 26. Как заставить линию всегда проходить через точки?
- 27. Как заставить отчет всегда вставлять разрыв страницы?
- 28. Как заставить git всегда использовать главную ветвь?
- 29. Как заставить окно JWindow всегда оставаться сфокусированным
- 30. Как заставить полимер всегда показывать кнопку меню
Не могли бы вы подробнее рассказать о прозрачности окна: Это не полностью прозрачным, является Это? – Tim
полностью прозрачный с изображением –