如何正确地通过一个视图将触摸事件传递到它下面的视图?

13
我有一个SwiftUI视图,它显示在其他视图之上。我发现使用如下的 Color.clear 可以使触摸交互穿透到其下方的视图:
var body: some View {
    VStack {
        Spacer()
        HStack {
            Spacer()
            SomeCustomContent()
            Spacer()
        }
        .overlay(GeometryReader { proxy in
            Color.clear.preference(key: MyCustomHeightPreferenceKey.self, value: proxy.size.height)
        })
    }
}

这是让触摸事件穿透到下方视图的正确方式吗?或者这只是SwiftUI行为的巧合/缺陷,未来Apple可能会修复/更改?

如果不是,那么正确的通过触摸事件的方式是什么?


2
触摸事件总是穿过透明的部分(Color.clear 是透明的)。另外,您可以在视图中明确指定 allowsHitTesting(false),这样它就不会捕捉到触摸事件。 - Asperi
在你想要触摸的视图上添加 .onTapGesture{},添加一个 @State private var touched:Bool,并在另一个你想要更改的视图中添加一个属性。 - Carlos Maria Caraccia
1个回答

22

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接