我有一对复选框,NSButton实例,我想阻止用户取消选择它们。可以选中任一按钮,也可以同时检查两者,但绝不应该取消选中这两个按钮。
如何拦截点击事件并测试它是否是唯一检查的按钮?如果我将状态设置回IBAction中的检查状态,则切换为未选中,然后选中。我不想要这个。我想在这种情况下忽略鼠标点击。
我也不希望它被禁用,或者至少不要显示为灰色。这会让用户感到困惑。
我认为会有一个像NSTextFieldDelegate这样的代理类型的shouldChangeState
类型方法,但我没有在任何地方看到它。
这似乎是一个非常基本的问题,但我无法找到让我感到满意的答案。
答案 0 :(得分:0)
在this post下查看我的答案
子类NSButton并覆盖mouseDown函数
不幸的是,.action
也无法正常工作(您需要手动实现点击识别器)
class RadioButton: NSButton {
override func mouseDown(with event: NSEvent) {}
}
如果该块只是有条件的,则可以执行以下操作:
class RadioButton: NSButton {
override func mouseDown(with event: NSEvent) {
if condition {
super.mouseDown(event)
}
}
}