objective-c - 如何使 NSAlert 的第二个按钮成为返回按钮?

标签 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];

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

最佳答案

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

例如,要将 Disconnect 设置为 ESC,将 Cancel 设置为 return,您可以执行以下操作:

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

在调用 -runModal 之前

关于objective-c - 如何使 NSAlert 的第二个按钮成为返回按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627894/

相关文章:

objective-c - 打开 'New' 文档?

objective-c - Node.js bodyparser 无法准备好 AFNetworking POST 数组

ios - 访问 Cloud Kit 公共(public)数据库时出现 "Not Authenticated"(9/1002) 错误

macos - mac检查网盘是否可用

css - Windows 中滚动条的绝对定位?

c - 如何在 mac OSX 中查找内存使用情况?

cocoa - 对 NSOutlineView 中的删除键使用react的适当方法是什么

objective-c - 如何从应用程序加载 xib 并显示自定义框架的窗口

objective-c - UITableView numberOfRowsInSection 不会加载超过一行

macos - 为什么我的可点击框需要双击才能使点击计数等于 1?