在我的应用程序中,我有一个包含NSView的NSWindowController。调用windowWillLoad()时,我初始化了仅包含自定义NSTokenField的NSViewController,即在布局调用(使用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,它看起来像没有更改其背景颜色的ui对象。 我认为这可能与聚焦环有关,因此我将其设置为无,但是没有变化。 当此视图不清晰时(不是第一响应者),并且正确地更改了背景,我点击了视图层次结构,看不到_NSKeyboardFocusClipView对象。
任何想法将不胜感激。 谢谢!