按下或禁用时不要更改NSButton外观

时间:2012-08-02 16:05:18

标签: objective-c xcode cocoa

我有两个NSButton,它们的状态和关闭状态都有图像。一次只能有一个活跃;单击一个,然后单击另一个来回更改属性。

问题是,如果我点击它时禁用了按钮,因此无法再次点击按钮,那么当按钮被禁用时图像会变暗 - 我不想让它变暗,我只想使用备用按钮图片。 另一方面,如果我只是启用按钮,但是在编程时只是在点击时不运行任何代码,那么当鼠标点击时会出现闪烁效果 - 当按钮不应该做任何事情时,这会分散注意力。

所以我要么禁止按钮在禁用时变暗,要么在按住鼠标按钮时阻止按钮改变按钮外观。

在阅读之后,听起来我需要继承NSButtonCell并覆盖 - (BOOL)imageDimsWhenDisabled来做前者。但是我无法弄清楚究竟如何对它进行子类化(我应该继承什么类型的NSButtonCell类)以及NSButton的“setCell”方法是否足以使用新的NSButtonCell类,或者如果我还需要子类化NSButton

对此的一些提示将不胜感激,或者可能有一种完全不同的方法可以实现我的目标。

2 个答案:

答案 0 :(得分:3)

检查出来:

[btnInfo.cell setImageDimsWhenDisabled:NO];

答案 1 :(得分:2)

  

禁用而不更改外观,请执行以下操作:

在MacOS上-NSButton:

唯一的选择是继承NSButton并重写mouseDown函数

class RadioButton: NSButton {
    override func mouseDown(with event: NSEvent) {}
}

在iOS上-UIButton:

简单禁用UserInteraction

mybutton.isUserInteractionEnabled = false