如何确定 NSButton 是不是为复选框?
Posted
技术标签:
【中文标题】如何确定 NSButton 是不是为复选框?【英文标题】:How to determine if an NSButton is a checkbox?如何确定 NSButton 是否为复选框? 【发布时间】:2012-09-13 01:03:12 【问题描述】:在 Interface Builder 中,您可以将按钮的样式设置为“检查”以将其变为复选框,并且您可以使用 NSButton 的 setButtonStyle:
方法在代码中设置按钮的样式,但是我如何在运行时确定特定的NSButton
是否是复选框(或单选按钮,或常规按钮等)?
我正在处理的项目的一部分需要从其他捆绑包加载视图,并且每个复选框都需要特殊行为(这些捆绑包来自第 3 方)。
【问题讨论】:
【参考方案1】:我不确定是否有万无一失的方法可以做到这一点。您可以检查 bezelStyle,以及记录 2 (NSRegularSquareBezelStyle) 的复选框。我不知道是否还有其他具有 NSRegularSquareBezelStyle 的按钮,它们不是复选框。您可能需要进行试验才能发现这一点。
编辑后:我确实找到了另一个为 bezelStyle(斜角按钮)记录 2 的按钮,但您可以记录 [button.cell showsStateBy],而复选框是我发现的唯一一个记录 1 的按钮。
【讨论】:
辛苦了!这听起来不像你说的那样万无一失,但至少这是一个好的开始。 我知道我迟到了,但万一有一个有进取心的年轻 Google 员工来到这里,我想我可能会提到一些我发现的有助于缩小类型列表的东西。NSButtonCell
有一个名为 -imageDimsWhenDisabled
的方法。它只为NSSwitchButton
(复选框)和NSRadioButton
按钮类型返回NO
。因此,如果我们检查,连同-bezelStyle
和-showsStateBy
/-highlightsBy
技巧,可能的按钮类型列表会减少很多。此外,-imagePosition
通常为复选框和单选按钮返回NSImageLeft
。这不是 100%,但它有帮助。以上是关于如何确定 NSButton 是不是为复选框?的主要内容,如果未能解决你的问题,请参考以下文章