Внешний вид Mac \ изменение темы - NSKeyboardFocusClipView - PullRequest
0 голосов
/ 10 июня 2019

В моем приложении у меня есть NSWindowController, который содержит NSView. когда вызывается windowWillLoad (), я инициирую NSViewController, который содержит только пользовательский NSTokenField, который устанавливает цвет фона при вызове макета (с использованием расширения NSColor), например так:

class TokenFieldWithBackground: NSTokenField {
    override func layout() {
        super.layout()
        if #available(OSX 10.14, *) {
            backgroundColor = NSColor.textBackgroundColor(appearance: 
        effectiveAppearance)
        }
    }
}

после того, как NSViewController инициализирован, я устанавливаю его представление как подпредставление моего NSView, например так:

view.addSubview((tokenFieldWithBackground?.view)!)

на данный момент все работает как положено.

Проблема: При смене темы Mac с темной на светлую и наоборот, ТОЛЬКО если я получаю представление в качестве первого респондента, его цвет фона меняется. (если вид не установлен в качестве первого респондента, изменение цвета темы работает как положено) Мало того, что когда я отлаживаю иерархию представлений, я вижу странный объект, который я не знаю, называемый _NSKeyboardFocusClipView, который выглядит как объект пользовательского интерфейса, который не изменяет свой цвет фона. Я подумал, что это может быть связано с фокусировочным кольцом, и поэтому я установил его на нет, но нет никаких изменений. когда это представление не в фокусе (не первый респондент), и оно правильно меняет фон, я нажимаю на иерархию представлений, я не вижу _NSKeyboardFocusClipView объект.

любая идея будет оценена. спасибо!

...