Catalina中的NSButton没有处于选择状态

Chr*_*ris 6 macos cocoa appkit nsbutton macos-catalina

我在Catalina上使用以下代码将NSButton设置为复选框(Mojave很好):

let checkbox = NSButton(frame: NSRect(x: 0, y: 0, width: 200, height: 32))
checkbox.setButtonType(.switch)
checkbox.title = "Sustain"
checkbox.state = .off
self.view.addSubview(checkbox)
Run Code Online (Sandbox Code Playgroud)

加载应用程序时看起来不错

关

但是,一旦我检查了一下,我希望出现的刻度线就不存在了

上

如果我加载了可视层次结构调试器,就可以很好地看到它,我已经尝试将这段代码直接放到新的应用程序中并且可以工作,但是在我的应用程序中它是隐藏的,几乎就像是某些东西将其覆盖...任何帮助表示赞赏

它也发生在NSPopUpButtons ....无边框:-s

更新:2019年10月14日

如评论中所述,这似乎是Xcode 11错误,Xcode 10.3在Catalina上正确呈现了按钮。

更新:2019年10月10日

奇怪的是,创建一个子类并设置一个CIFilter会显示该复选框,您只需要对一个NSButton进行此操作,然后其余所有工作就可以了:-s

import AppKit

class Checkbox : NSButton {

init() {
  super.init(frame: .zero)
    addFilter()
}

required init?(coder: NSCoder) {
    super.init(coder: coder)
    addFilter()
}

// add random cifilter
func addFilter() {
    let colorFilter = CIFilter(name: "CIFalseColor")!
    colorFilter.setDefaults()
    colorFilter.setValue(CIColor(cgColor: NSColor.black.cgColor), forKey: "inputColor0")
    colorFilter.setValue(CIColor(cgColor: NSColor.white.cgColor), forKey: "inputColor1")
    self.contentFilters = [colorFilter]
}


}
Run Code Online (Sandbox Code Playgroud)

对下拉菜单执行相同的操作,但是直到您单击它为止它是不可见的……开始感觉像是Catalina的错误