如何在macOS上的SwiftUI应用程序的编辑菜单中启用删除键快捷方式?

如何在macOS上的SwiftUI应用程序的编辑菜单中启用删除键快捷方式?,swiftui,Swiftui,如果我将.ondelete命令添加到列表中,则选中一行时会启用编辑->删除菜单项。但是,delete键不起作用。我看到菜单项没有列出快捷方式。当尝试使用CommandGroup替换它时,快捷方式变为command+delete 如何让编辑->删除菜单项使用删除键快捷方式?或者如何启用使用delete键删除macOS上列表中的行 @主要 结构MyApp:App{ var body:一些场景{ 窗口组{ ContentView() } //将其转换为命令+删除 //.命令{ //CommandG

如果我将
.ondelete命令添加到列表中,则选中一行时会启用编辑->删除菜单项。但是,delete键不起作用。我看到菜单项没有列出快捷方式。当尝试使用CommandGroup替换它时,快捷方式变为command+delete

如何让编辑->删除菜单项使用删除键快捷方式?或者如何启用使用delete键删除macOS上列表中的行


@主要
结构MyApp:App{
var body:一些场景{
窗口组{
ContentView()
}
//将其转换为命令+删除
//.命令{
//CommandGroup(替换:CommandGroupPlacement.pasteboard){
//按钮(“删除”,操作:{
//打印(“自定义删除”)
//                })
//.keyboard快捷方式(.delete)
//            }
//        }
}
}
结构ContentView:View{
@状态变量数据=数据()
@State var selection=Set()
var body:一些观点{
List.init(data.models,id:\.id,selection:$selection){
文本(“名称:\($0.Name)”)
}
.keyboardShortcut(.delete)//这不起作用
.onDeleteCommand(执行:{//当在菜单中单击时,此操作有效
打印(“删除行”)
})
}
}
结构模型:可识别{
让id:Int
let name:String
}
结构数据{
var模型=[模型(id:1,名称:“第一”)]
}

在再现您的问题时,我将
delete
误解为
forwardDelete
,因此在测试时按错了键。(来自全尺寸键盘,其中键标有
backspace
delete
可能会让人困惑。)

但我让您的自定义删除命令按您的预期工作。只需确保为
修饰符
参数传入一个空数组:

。命令{
CommandGroup(替换:CommandGroupPlacement.pasteboard){
按钮(“删除”,操作:{
打印(“自定义删除”)
})
.keyboard快捷方式(.delete,修饰符:[])
}
}
如果您不喜欢使用“全局命令”来执行此操作。只需使用相同的键盘快捷键将“删除”按钮添加到工具栏中,调用与“删除”命令相同的
delete
方法即可:

List.init(data.models,id:\.id,selection:$selection){
文本(“名称:\($0.Name)”)
}
.keyboard快捷方式(.delete,修饰符:[])
.onDeleteCommand(执行:删除)
.工具栏(内容:{
按钮(操作:删除){
图像(系统名称:“垃圾桶.填充”)
}
.keyboard快捷方式(.delete,修饰符:[])
.disabled(selection.isEmpty)
})