【发布时间】:2018-04-20 16:32:54
【问题描述】:
我想禁用NSButton 的用户交互。唯一可能的选择似乎是将isEnabled 设置为false:
button.isEnabled = false
...但问题是它给我的按钮图像提供了白色阴影。有什么办法可以摆脱这种阴影?
【问题讨论】:
我想禁用NSButton 的用户交互。唯一可能的选择似乎是将isEnabled 设置为false:
button.isEnabled = false
...但问题是它给我的按钮图像提供了白色阴影。有什么办法可以摆脱这种阴影?
【问题讨论】:
您必须设置相应按钮单元的imageDimsWhenDisabled 属性:
button.isEnabled = false
if let cell = button.cell as? NSButtonCell {
cell.imageDimsWhenDisabled = false
}
【讨论】:
一个选项不是禁用它,而是让它触发并在代码中相应地处理它。例如在禁用条件适用时什么也不做。
【讨论】:
正如this answer 所说,覆盖NSButton 并为hitTest(_:) 返回nil。
如果您想切换是否启用用户交互,请创建一个自定义变量并返回super.hitTest(point)(如果您希望启用该按钮)。
class CustomButton: NSButton {
var isUserInteractionEnabled = true
override func hitTest(_ point: NSPoint) -> NSView? {
return isUserInteractionEnabled ? super.hitTest(point) : nil
}
}
【讨论】: