Ios 在SwiftUI中,如何执行手势,但将手势转发到其后面的视图?
我正在创建一个工具提示系统 如果用户触摸到工具提示之外的任何地方,我想取消工具提示 我希望,在工具提示之外的一次触摸都会取消工具提示,并激活用户点击的任何控件。(因此,可以打开工具提示,但仍单击工具提示外的按钮,并在第一次点击时将其激活。) 为此,我有一个不可见的视图来处理点击手势并忽略工具提示,但我不知道如何使SwiftUI不拦截和取消点击手势。在web上,这相当于不调用Ios 在SwiftUI中,如何执行手势,但将手势转发到其后面的视图?,ios,swift,swiftui,Ios,Swift,Swiftui,我正在创建一个工具提示系统 如果用户触摸到工具提示之外的任何地方,我想取消工具提示 我希望,在工具提示之外的一次触摸都会取消工具提示,并激活用户点击的任何控件。(因此,可以打开工具提示,但仍单击工具提示外的按钮,并在第一次点击时将其激活。) 为此,我有一个不可见的视图来处理点击手势并忽略工具提示,但我不知道如何使SwiftUI不拦截和取消点击手势。在web上,这相当于不调用event.stopPropagation()和event.preventDefault(),或 有什么想法吗?您需要使用此
event.stopPropagation()
和event.preventDefault()
,或
有什么想法吗?您需要使用此修改器:
.allowsHitTesting(false)
下面是一个可能方法的演示。使用Xcode 11.4/iOS 13.4进行测试
struct ContentView: View {
var body: some View {
VStack {
Button("Button") { print("> button tapped")}
}
.frame(width: 200, height: 200)
.contentShape(Rectangle()) // makes all area tappable
.simultaneousGesture(TapGesture().onEnded({
print(">>> tooltip area here")
}))
.border(Color.red) // just for demo show area
}
}
Tnx。你救了我一天。我的PDFView和上面的按钮有问题,不能接受触摸事件。这不能回答我的问题。我需要允许点击测试,以便处理点击手势来关闭工具提示。但我也希望我的点击能影响该视图背后的视图。