允许混合状态,但不允许使用 NSButton(复选框)单击



我有一个以编程方式设置的复选框(NSButton(。此复选框将设置为其他onoffmixed,但是当用户单击它时,我希望它仅在onoff之间循环

目前,当用户单击复选框时button.allowsMixedState = true,它将在所有三种状态之间循环。

有没有办法button.allowsMixedState = true,但单击时只能在onoff之间循环复选框?

我终于能够通过子类化NSButtonCell而不是NSButton并覆盖其nextState属性来使其工作:

(此示例是使用 Swift 4 运行的(

// 0 is .off, 1 is .on and -1 is .mixed.
// We override nextState so that it can never be -1.
class MyButtonCell: NSButtonCell {
    override var nextState: Int {
        get {
            return self.state == .on ? 0 : 1
        }
    }
}

这意味着我可以将复选框的状态设置为 mixed ,但是当用户单击它时,复选框只会在 onoff 之间循环。

最新更新