В моем приложении у меня есть 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 объект.
любая идея будет оценена.
спасибо!