1

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

问题是,如果我在单击按钮时禁用它以使其无法再次单击,那么当按钮被禁用时图像会变暗——我不希望它变暗,我只想使用备用图像。另一方面,如果我只是让按钮保持启用状态,但以编程方式在单击它时不运行任何代码,那么当鼠标单击时会出现闪烁效果——当按钮不应该做任何事情时,这会分散注意力。

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

阅读后,听起来我需要继承 NSButtonCell 并覆盖 - (BOOL)imageDimsWhenDisabled 来做前者。但是我不知道如何子类化它(我应该继承什么样的 NSButtonCell 类)以及 NSButton 的“setCell”方法是否足以使用新的 NSButtonCell 类,或者我是否需要子类化 NSButton .

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

4

3 回答 3

5

看一下这个:

[btnInfo.cell setImageDimsWhenDisabled:NO];

于 2013-05-24T13:52:31.270 回答
2

如果您想在不改变外观的情况下禁用它,请执行以下操作:

在 MacOS - NSButton 上:

唯一的选择是继承 NSButton 并覆盖mouseDown函数

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

在 iOS 上 - UIButton:

简单禁用 UserInteraction

mybutton.isUserInteractionEnabled = false
于 2018-11-12T14:29:02.230 回答
0

对于 Swift 中更新的答案,这对我有用:

(theButton.cell! as! NSButtonCell).imageDimsWhenDisabled = false

于 2020-12-26T21:30:23.037 回答