如何确定 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 是不是为复选框?的主要内容,如果未能解决你的问题,请参考以下文章

如何确定是不是选中了复选框?

我如何确定是不是选中了复选框以执行某些操作,然后未选中执行其他操作? [复制]

确定是不是在 Ionic 2 中选中了复选框

如何识别复选框是不是选中了ajax? [复制]

确定是不是使用 jQuery 检查复选框 [重复]

引导程序如何确定复选框/单选按钮的选中状态