如何让NSAlert的第二个按钮成为返回按钮?

时间:2013-05-18 19:00:05

标签: objective-c macos cocoa nsalert

我想做这样的事情NSAlert
enter image description here

如您所见,“返回”按钮是第二个按钮。我怎样才能做到这一点?
这是我用来创建NSAlert的代码示例,但第一个按钮获得了焦点:

NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Are you sure you want to disconnect?"];
[alert addButtonWithTitle:@"Disconnect"];
[alert addButtonWithTitle:@"Cancel"];
[alert runModal];

我想关注“取消”按钮。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:17)

要更改NSButton对象内NSAlert元素的等效键,您必须直接访问按钮(创建后-runModal之前)并更改密钥使用-setKeyEquivalent:方法的等价物。

例如,要将Disconnect设置为ESC并将Cancel设置为返回,您将执行以下操作:

NSArray *buttons = [alert buttons];
// note: rightmost button is index 0
[[buttons objectAtIndex:1] setKeyEquivalent: @"\033"];
[[buttons objectAtIndex:0] setKeyEquivalent:@"\r"];

在致电-runModal

之前

答案 1 :(得分:0)

快捷键4

build.json