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 的视图控制器中实现数据绑定?

如何在 SwiftUI 中实现 MVVM 模式?视图不会重新渲染

如何在 swiftui 中实现 struct View 上的 var 类 ObservableObject

如何在 SwiftUI 中的 WatchOS 中实现 handleUserActivity?

如何在 SwiftUI 中实现触发 switch case 的左或右 DragGesture()?