首页 > 解决方案 > Catalina 中的 NSButton 没有选中状态

问题描述

我在 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)

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

离开

但是一旦我检查它,我期望在那里的刻度线就不存在了

上

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

它也发生在 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]
}


}

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

标签: macoscocoaappkitnsbuttonmacos-catalina

解决方案


推荐阅读