NSPushOnPushOffButton没有停留“推入”

时间:2013-07-06 20:13:53

标签: objective-c cocoa nsbutton nsbuttoncell

我正在尝试以编程方式向视图添加按钮,我希望它在单击时保持“推入”状态,直到再次单击它。从我读过的内容看来,用于此的按钮似乎是NSPushOnPushOffButton。这是Apple对它的描述:

  

首先点击两个高亮显示并使按钮被“推送”   在“如果按钮有边界;再次单击将其恢复为正常状态   州。此选项在Interface Builder中称为“Push On Push Off”   Button Inspector。

它没有在我的程序中工作所以我制作了一个SSCCE,我将在下面包含。我的问题是点击时按钮没有停留,而是像普通按钮一样弹出。我不确定我是否遗漏了关于这个按钮应该如何执行的内容,或者我是否只是错误地实现它(这是我第一次尝试以编程方式执行UI),但其他按钮类型如此作为NSToggleButton工作,除非NSPushOnPushOffButton有一些特别之处,否则我不知道哪里出错了。如果有人可以建议一个更好的解决方案或解释我哪里出错将会很好。谢谢!

#import "AppDelegate.h"

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSRect buttonFrame = NSMakeRect(0,0,200,200);
    NSButton *button = [[NSButton alloc]initWithFrame:buttonFrame];
    [self.window.contentView addSubview:button];
    [button setButtonType:NSPushOnPushOffButton];
}

@end

1 个答案:

答案 0 :(得分:2)

您似乎必须设置“挡板样式”,例如

[button setBezelStyle:NSRegularSquareBezelStyle];

将其添加到示例代码后,它按预期工作。