如何解决SwiftUI:如何在菜单打开时忽略背景点击?
我目前正在努力解决 SwiftUI 问题:
以一种非常抽象的方式,这就是我的应用程序代码的样子(不是实际的代码,只是为了讨论这里的事情):
struct SwiftUIView: View {
@State private var toggle: Bool = true
var body: some View {
VStack {
Spacer()
if toggle {
Text("on")
} else {
Text("off")
}
Spacer()
Rectangle()
.frame(height: 200)
.onTapGesture { toggle.toggle() }
Spacer()
Menu("Actions") {
Button("Duplicate",action: { toggle.toggle() })
Button("Rename",action: { toggle.toggle() })
Button("Delete",action: { toggle.toggle() })
}
Spacer()
}
}
}
那么这里的本质是什么?
- 背景中有一个元素(矩形)可以对用户的点击输入做出反应
- 有一个菜单,其中包含在点击时也会执行某些操作的项目
现在,我面临以下问题:
当通过点击“操作”打开菜单时,菜单会打开 - 到目前为止一切顺利。但是,当我现在决定不想触发菜单中包含的任何操作并点击背景上的某处将其关闭时,我可能会点击背景中的矩形。如果我这样做,则点击矩形会直接触发 onTapGesture 中定义的操作。
然而,所需的行为是当菜单打开时,我可以点击菜单外的任何地方来关闭它而触发任何其他元素。
知道如何实现这一目标吗?谢谢!
(如果需要进一步说明,请在评论中告诉我。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。