SwiftUI:如何在 macOS 应用程序中实现编辑菜单
Posted
技术标签:
【中文标题】SwiftUI:如何在 macOS 应用程序中实现编辑菜单【英文标题】:SwiftUI: How to implement Edit menu in macOS app 【发布时间】:2021-02-13 20:38:10 【问题描述】:我正在使用 SwiftUI
和新的 App
生命周期构建一个 macOS 应用程序。
开始新项目后,所有默认的 macOS 菜单项(如剪切、复制、粘贴)都已存在,但它们显示为灰色。 如何实现这些默认菜单项的方法?
编辑:我目前在macOS Big Sur 11.0.1 Beta
(20B5012d) 上使用Xcode 12.2 beta 3
(12B5035g)。我不想使用 Storyboard 或 AppDelegate 来解决这个问题,而是使用 SwiftUI 和新的 App
生命周期。
【问题讨论】:
您是否尝试选择一些文本然后选择复制?对我来说,它们开箱即用,可以说没有任何额外的代码。还是需要复制一些自定义类型? 你说得对,例如,如果我选择 TextField 的内容,它就可以开箱即用。但是,如果没有关注特定的输入字段,我希望能够运行自定义复制功能。 您可能需要说明您使用的是什么版本的 macOS 和 Xcode。 我刚刚澄清了我原来的问题。 【参考方案1】:查看命令修饰符、CommandGroup 和 CommandMenu。
@main
struct MyApp: App
var body: some Scene
WindowGroup
ContentView()
.commands
// for example
CommandGroup(replacing: .help)
Button(action: someActionHere())
Text("MyApp Help")
CommandMenu("Edit")
// ...
【讨论】:
我喜欢这篇文章。它解释得更多。 swiftwithmajid.com/2020/11/24/commands-in-swiftui 这将创建一个名为 Edit 的新菜单,不允许为现有的 Edit 菜单实现功能。以上是关于SwiftUI:如何在 macOS 应用程序中实现编辑菜单的主要内容,如果未能解决你的问题,请参考以下文章
如何在不中断删除的情况下在 SwiftUI 中实现 TextField 列表
如何在 SwiftUI 中实现 MVVM 模式?视图不会重新渲染
如何在 swiftui 中实现 struct View 上的 var 类 ObservableObject