Objective c 如何确定NSButton是否为复选框?

Objective c 如何确定NSButton是否为复选框?,objective-c,macos,cocoa,nib,nsbutton,Objective C,Macos,Cocoa,Nib,Nsbutton,在Interface Builder中,您可以将按钮的样式设置为“Check”以将其转换为复选框,并且可以使用NSButton的setButtonStyle:方法在代码中设置按钮的样式,但是如何在运行时确定特定的NSButton是否为复选框(或单选按钮,或常规按钮等) 我正在处理的项目的一部分需要从其他捆绑包加载视图,并且每个复选框都需要特殊的行为(这些捆绑包来自第三方)。我不确定是否有一种简单的方法可以做到这一点。您可以检查bezelStyle,以及日志为2的复选框(NSRegularSqua

在Interface Builder中,您可以将按钮的样式设置为“Check”以将其转换为复选框,并且可以使用NSButton的
setButtonStyle:
方法在代码中设置按钮的样式,但是如何在运行时确定特定的
NSButton
是否为复选框(或单选按钮,或常规按钮等)


我正在处理的项目的一部分需要从其他捆绑包加载视图,并且每个复选框都需要特殊的行为(这些捆绑包来自第三方)。

我不确定是否有一种简单的方法可以做到这一点。您可以检查bezelStyle,以及日志为2的复选框(NSRegularSquareBezelStyle)。我不知道是否还有其他按钮具有非复选框的NSRegularSquareBezelStyle。你可能需要进行实验才能找到答案


编辑后:我确实找到了另一个按钮,它为bezelStyle记录了2(斜面按钮),但您可以记录[button.cell showsStateBy],我发现只有这个复选框记录了1。

很好!听起来不像你说的那么简单,但至少这是一个好的开始。我知道我来晚了,但如果一个有进取心的年轻谷歌人最终来到这里,我想我可以提到一些我发现的有助于缩小类型列表的东西
NSButtonCell
有一个名为
-imageDimsWhenDisabled
的方法。对于
NSSwitchButton
(复选框)和
NSRadioButton
按钮类型,它只返回
NO
。因此,如果我们检查一下,连同
-bezelStyle
-showsStateBy
/
-highlightsBy
技巧,可能的按钮类型列表会减少很多。另外,
-imagePosition
通常会为复选框和单选按钮返回
NSImageLeft
。这不是100%,但它有帮助。