Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 带蓝色外观的NSButton默认按钮_Cocoa_User Interface - Fatal编程技术网

Cocoa 带蓝色外观的NSButton默认按钮

Cocoa 带蓝色外观的NSButton默认按钮,cocoa,user-interface,Cocoa,User Interface,我有一个包含1个或多个按钮的对话框,希望能够通过编程将最右边的按钮设置为默认按钮,这样当用户按下Enter键或Return键时,它应该像用户单击它一样响应 我使用的是[btn setKeyEquivalent:@“\r”],这使它工作正常,但我希望按钮具有蓝色的外观,而这不会发生。我需要做什么?文档中说: 请注意,如果将键设置为Return,则该按钮将成为默认按钮 因此,您的操作是正确的。您可以在设置密钥等效项后尝试此操作: [button setNeedsDisplay:YES]; 这将强制

我有一个包含1个或多个按钮的对话框,希望能够通过编程将最右边的按钮设置为默认按钮,这样当用户按下Enter键或Return键时,它应该像用户单击它一样响应


我使用的是
[btn setKeyEquivalent:@“\r”]
,这使它工作正常,但我希望按钮具有蓝色的外观,而这不会发生。我需要做什么?

文档中说:

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

因此,您的操作是正确的。您可以在设置密钥等效项后尝试此操作:

[button setNeedsDisplay:YES];
这将强制按钮重新绘制自身

[myWindow setDefaultButtonCell:[btn cell]]; // should do the trick.

有关更多详细信息,请参阅。

我没有正确设置按钮挡板样式,这就是它看起来不正确的原因。我现在将按钮设置为:

[btn setBezelStyle:NSRoundedBezelStyle];
然后,使用以下任一项设置默认按钮:

[myWindow setDefaultButtonCell:[btn cell]]; 


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

   button.bezelstyle = NSBezelStyleRounded; // Push in Interface Builder
   button.keyEquivalent = @"\r";
   button.highlighted = YES; // this is the most important part.
对于Swift 4.2,只需使用

button.isHighlighted = true

看到这个解决方案让我兴奋不已。难以置信的是,我没有想到强制一个按钮成为默认的按钮单元,并强制设置相应的键。有时您确实必须这样做,即使NSView包含快捷方式设置为返回的键。奇怪,但却是真的。谢谢在Interface Builder中,必须选择样式
Push
。我浏览了Interface Builder提供的所有15种样式,在OS X 10.8.3(Mountain Lion)中,当设置为默认按钮单元时,只有
Push
会显示蓝色。其他类型的按钮将使用返回键作为其等效键,并成为默认按钮,但只有
Push
按钮会显示蓝色。我根本没有在其他版本的OS X上测试过-很可能在2009年雪豹(?)中提出并回答这个问题时,这个注释是不必要的。谢谢。这对我很有帮助:)在约塞米蒂和更高的地方,它仍然是蓝色的吗?对于我的对话框,它似乎不起作用——即使等价键是Return(小的左下箭头符号)。
button.isHighlighted = true