macOS App SwiftUI 中的 ContextMenu 按钮点击
Posted
技术标签:
【中文标题】macOS App SwiftUI 中的 ContextMenu 按钮点击【英文标题】:ContextMenu in macOS App SwiftUI on Button Tap 【发布时间】:2022-01-03 21:52:57 【问题描述】:我想点击一个按钮并在 SwiftUI 中为 macOS 应用程序显示上下文菜单。我可以看到按钮,但是当我点击按钮时没有任何反应。
let menuItems = ContextMenu
Button("Today")
Button("Tomorrow")
Button
// action
label:
Label("Add Date", systemImage: "calendar")
.contextMenu(menuItems)
有什么想法吗?
【问题讨论】:
【参考方案1】:在上下文菜单周围放置一个Button
意味着该按钮正在管理所有的点击事件,并且它们都没有通过contextMenu
修饰符。
您可以移动修饰符以附加到按钮本身,您会得到一些在左键单击时执行按钮操作,但在右键单击时显示上下文菜单的内容:
Button
print("Clicked")
label:
Label("Add Date", systemImage: "calendar")
.contextMenu(menuItems)
【讨论】:
谢谢!这项工作,但我怎样才能让它在按钮点击上工作。当我右键单击按钮时,您的代码有效。 我不需要在 macOS 中左键单击上下文菜单,所以恐怕我不是 100% 知道!我在文档中能找到的最接近的是使用Menu
,它会生成一个下拉式菜单。默认情况下,它会水平扩展以填充整个空间,但如果需要,您可以使用 frame
修饰符。
非常感谢。我会研究更多。【参考方案2】:
在我看来,您只是在寻找具有按钮样式的菜单,例如
Menu
Button("Today")
Button("Tomorrow")
label:
Label("Add Date", systemImage: "calendar")
.menuStyle(.borderedButton)
【讨论】:
谢谢!我更新了问题,所以显示我在找什么。 是的,就是这样。以上是关于macOS App SwiftUI 中的 ContextMenu 按钮点击的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI MacOS App 中使用 NSTouchBar?
SwiftUI MacOS App AVPlayer 不适用于视频 URL
如何从 Mac OS 中的 SwiftUI 列表中删除底部/顶部项目填充
Swiftui: MacOS App: Fetching Core Data in ContentView OK,但是如何使用 AppDelegate 的结果呢?
macOS Document App SwiftUI 项目上的 NSPersistentDocument FetchRequest 扭曲属性崩溃