NSBorderlessWindowMask Subview NSTextfield недоступно для редактирования клавиш Swift

Я использую NSBorderlessWindowMask для моего главного окна в проекте Swift (без раскадровок), когда я загружаю Subview, выход NSTextfield не редактируется с помощью клавиш. Я уже положил этот код на инициализацию:

self.window?.makeKeyWindow()
self.window?.becomeKeyWindow()

это позволяет розетке быть "синим", как на фокусе, но редактирование клавиатуры отключено, я могу скопировать / вставить текстовое поле

2 ответа

Решение

Я нашел отличное решение этой проблемы: в основном, настроить в начале маски NSWindow как NSTitledWindowMask, когда приложение загружено, удалить настроить новую маску NSBorderlessWindowMask

   func applicationWillFinishLaunching(notification: NSNotification) {
        self.window?.titleVisibility = NSWindowTitleVisibility.Hidden
        self.window?.styleMask = NSTitledWindowMask // adds title bar
    }

    func applicationDidFinishLaunching(aNotification: NSNotification) {

        self.window?.makeKeyWindow()
        self.window?.becomeKeyWindow()
        self.window.setIsVisible(true)
        self.window?.styleMask = NSBorderlessWindowMask // removes title bar
    }

Вам нужно использовать пользовательский подкласс NSWindow и переопределить canBecomeKeyWindow() вернуть истину. По умолчанию он возвращает false для окон без строк заголовка (как задокументировано).

Вы, вероятно, хотите сделать то же самое для canBecomeMainWindow(),

Кроме того, никогда не звоните becomeKeyWindow() (кроме звонить super в переопределении). Это вызывается Какао, чтобы сообщить окну, что оно стало ключевым окном. Он не указывает окну, чтобы оно стало ключевым окном.

Другие вопросы по тегам