3

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

如果按钮有边框,则第一次单击会突出显示并导致按钮被“推入”;第二次单击将其恢复到正常状态。这个选项在 Interface Builder 的 Button Inspector 中称为“Push On Push Off”。

它在我的程序中不起作用,所以我制作了一个 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
4

1 回答 1

2

例如,您似乎必须设置“边框样式”

[button setBezelStyle:NSRegularSquareBezelStyle];

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

于 2013-07-06T20:34:13.640 回答