我有一个带有两个按钮的视图,我添加了
.onTapGesture
来切换视图。
但是在我添加.onTapGesture
之后,按钮位于其下方并且没有响应。
有什么办法可以同时使用吗
MenuView()
.onTapGesture{
self.isShowing.toggle()
}
您正在寻找的是同步手势:
import SwiftUI
struct TestView: View {
var body: some View {
let tapGesture = TapGesture()
.onEnded { _ in
print("Menu tapped")
}
menuView
.simultaneousGesture(tapGesture)
}
var menuView: some View {
VStack {
Button {
print("Item 1 hit")
} label: {
Text("Item 1")
}
Button {
print("Item 2 hit")
} label: {
Text("Item 2")
}
}
}
}
struct TestView_Previews: PreviewProvider {
static var previews: some View {
Group {
TestView()
}
}
}
struct Previews: PreviewProvider {
static var previews: some View {
Color.gray
.frame(width: 200, height: 100)
.overlay(alignment: .topTrailing, content: {
Menu(
content: {
Button("Edit", systemImage: "pencil") {}
},
label: {
Image(systemName: "ellipsis")
.padding()
}
)
.onTapGesture {
// This prevents card click on Menu click
}
})
.onTapGesture {
print("Card clicked", Date.now.timeIntervalSince1970)
}
}
}
我认为这就是你想要做的。菜单或视图内任何其他按钮上的空
.onTapGesture
可防止外部 .onTapGesture
运行