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

2024-05-14

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

如果用户触摸工具提示之外的任何地方,我想关闭工具提示。

我希望这样在工具提示之外的触摸既可以消除工具提示,又可以激活用户点击的任何控件。 (因此,您可以打开一个工具提示,然后仍然单击工具提示外部的按钮,并在第一次点击时激活它。)

为此,我有一个不可见的视图来处理点击手势并消除工具提示,但我不知道如何使 SwiftUI 不拦截并取消点击手势。在网络上,相当于不打电话event.stopPropagation() and event.preventDefault(), or 呼叫超级touchesBegan:在 UIKit 中 https://developer.apple.com/documentation/uikit/uiresponder/1621142-touchesbegan.

有任何想法吗?


这是可能方法的演示。使用 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
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐