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