Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在SwiftUI中,如何执行手势,但将手势转发到其后面的视图?_Ios_Swift_Swiftui - Fatal编程技术网

Ios 在SwiftUI中,如何执行手势,但将手势转发到其后面的视图?

Ios 在SwiftUI中,如何执行手势,但将手势转发到其后面的视图?,ios,swift,swiftui,Ios,Swift,Swiftui,我正在创建一个工具提示系统 如果用户触摸到工具提示之外的任何地方,我想取消工具提示 我希望,在工具提示之外的一次触摸都会取消工具提示,并激活用户点击的任何控件。(因此,可以打开工具提示,但仍单击工具提示外的按钮,并在第一次点击时将其激活。) 为此,我有一个不可见的视图来处理点击手势并忽略工具提示,但我不知道如何使SwiftUI不拦截和取消点击手势。在web上,这相当于不调用event.stopPropagation()和event.preventDefault(),或 有什么想法吗?您需要使用此

我正在创建一个工具提示系统

如果用户触摸到工具提示之外的任何地方,我想取消工具提示

我希望,在工具提示之外的一次触摸都会取消工具提示,并激活用户点击的任何控件。(因此,可以打开工具提示,但仍单击工具提示外的按钮,并在第一次点击时将其激活。)

为此,我有一个不可见的视图来处理点击手势并忽略工具提示,但我不知道如何使SwiftUI不拦截和取消点击手势。在web上,这相当于不调用
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和上面的按钮有问题,不能接受触摸事件。这不能回答我的问题。我需要允许点击测试,以便处理点击手势来关闭工具提示。但我也希望我的点击能影响该视图背后的视图。