NSAlert 破坏性按钮

NSAlert destructive button

当 Big Sur 出现在我们的 Mac 上时,我注意到 NSAlert 控制器中的破坏性按钮文本显示为红色,如图所示。

我找不到在我的应用程序中引入此功能的方法。

使用标准 addButton(withTitle:) 方法,我们无法设置其意图(例如默认、取消或破坏性)。

你能给我点提示吗?

谢谢

将按钮的 属性 hasDestructiveAction 设置为 true 。这 属性 在大苏尔是新的。

来源:AppKit Release Notes for macOS Big Sur 11

添加到

似乎只有当按钮不是第一个(因此不是蓝色突出显示的按钮)时,才能将按钮设置为破坏性。对于每个好奇的人,这就是它在代码中的样子:

let alert = NSAlert()
alert.messageText = "Alert Title"
alert.alertStyle = .warning
alert.addButton(withTitle: "Cancel")
alert.addButton(withTitle: "Destructive Button")
    
if #available(macOS 11.0, *) {
    alert.buttons.last?.hasDestructiveAction = true
}

缺点是用户无法通过回车接受破坏性操作,必须手动单击或 select 通过选项卡按钮(必须在设置中启用该选项)。