NSButton默认按钮,带蓝色外观

Car*_*osa 23 user-interface cocoa

我有一个带有一个或多个按钮的对话框,并且希望能够以编程方式将最右边的按钮设置为默认按钮,这样当用户按下Enter或Return键时,它应该响应,就像用户单击它一样.

我正在使用[btn setKeyEquivalent:@"\r"],这使它工作正常但我希望按钮具有蓝色外观,这是没有发生的.我需要做什么?

Car*_*osa 38

我错过了正确设置按钮边框样式,这就是它看起来不正常的原因.我现在正在设置按钮:

[btn setBezelStyle:NSRoundedBezelStyle];
Run Code Online (Sandbox Code Playgroud)

然后,其中任何一个都可以设置默认按钮:

[myWindow setDefaultButtonCell:[btn cell]]; 
Run Code Online (Sandbox Code Playgroud)

要么

[btn setKeyEquivalent:@"\r"] 
Run Code Online (Sandbox Code Playgroud)

  • 在Interface Builder中,您必须选择样式"Push".我浏览了Interface Builder提供的所有15种样式,当设置为OS X 10.8.3(Mountain Lion)中的默认按钮单元时,只有"Push"发出蓝光.其他类型将返回键作为其等效键并成为默认值按钮,但只有"推"按钮发出蓝光.我还没有对其他版本的OS X进行测试 - 当这个问题在2009年被问到并回答时,很可能在Snow Leopard(?)中没有必要使用此注释. (4认同)

ber*_*bie 7

我的设置是一个自定义工作表,我希望默认按钮在 NSAlert 中显示。以下配置为我提供了蓝色的默认外观。适用于 10.12.3 Sierra。

   button.bezelstyle = NSBezelStyleRounded; // Push in Interface Builder
   button.keyEquivalent = @"\r";
   button.highlighted = YES; // this is the most important part.
Run Code Online (Sandbox Code Playgroud)


Geo*_*lly 6

文件说:

请注意,如果将键设置为等效于Return,则该按钮将成为默认按钮.

因此,你正确地做到了.您可以在设置等效键后尝试此操作:

[button setNeedsDisplay:YES];
Run Code Online (Sandbox Code Playgroud)

这会强制按钮重绘自己.