#objective-c #swift #nswindow #floating #spotlight
#objective-c #swift #nswindow #плавающий #прожектор
Вопрос:
Я пытаюсь создать приложение с такими функциями, как поиск spotlight, который был продемонстрирован на WWDC.
Мне удалось перевести его на плавающий уровень с kCGFloatingWindowLevelKey
помощью, однако окно крадет фокус из любого окна, которое ранее было активным. Я бы хотел, чтобы он сохранял фокус и по-прежнему принимал ввод в текстовое поле от пользователя. Это выполнимо?
Ответы в swift предпочтительнее, но objective-c также работает.
Комментарии:
1. Это определенно возможно, но я не уверен, как. Spotlight может быть не окном, а, вероятно
NSMenu
, с пользовательским элементом управления внутри.2. Я только что попытался создать NSMenu с пунктом меню и пользовательским представлением. Но как только ему присваивается фокус клавиатуры, другие окна теряют свое «основное» состояние окна и становятся «неактивными» ( developer.apple.com/library/mac/Documentation/Cocoa/Conceptual /… ). Я понятия не имею, что попробовать дальше.
3. В mavericks и раньше я бы сказал, что вы на месте. Однако я имею в виду демонстрацию из WWDC spotlight в 10.10 Yosemite. appleinsider.com/articles/14/06/05 /…
4. Я не думаю, что проблема в текстовом поле. Проблема в том, что «клавиша» окна делает все окна из любого другого приложения неактивными. Активация текстового поля также делает ключ окна. Я уверен, что это можно как-то сделать.
5. Я полагаю, вам нужен
NSPanel
withNSNonactivatingPanelMask
в его маске стиля.