Objective c 如何确定NSButton是否为复选框?
在Interface Builder中,您可以将按钮的样式设置为“Check”以将其转换为复选框,并且可以使用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
setButtonStyle:
方法在代码中设置按钮的样式,但是如何在运行时确定特定的NSButton
是否为复选框(或单选按钮,或常规按钮等)
我正在处理的项目的一部分需要从其他捆绑包加载视图,并且每个复选框都需要特殊的行为(这些捆绑包来自第三方)。我不确定是否有一种简单的方法可以做到这一点。您可以检查bezelStyle,以及日志为2的复选框(NSRegularSquareBezelStyle)。我不知道是否还有其他按钮具有非复选框的NSRegularSquareBezelStyle。你可能需要进行实验才能找到答案
编辑后:我确实找到了另一个按钮,它为bezelStyle记录了2(斜面按钮),但您可以记录[button.cell showsStateBy],我发现只有这个复选框记录了1。很好!听起来不像你说的那么简单,但至少这是一个好的开始。我知道我来晚了,但如果一个有进取心的年轻谷歌人最终来到这里,我想我可以提到一些我发现的有助于缩小类型列表的东西
NSButtonCell
有一个名为-imageDimsWhenDisabled
的方法。对于NSSwitchButton
(复选框)和NSRadioButton
按钮类型,它只返回NO
。因此,如果我们检查一下,连同-bezelStyle
和-showsStateBy
/-highlightsBy
技巧,可能的按钮类型列表会减少很多。另外,-imagePosition
通常会为复选框和单选按钮返回NSImageLeft
。这不是100%,但它有帮助。