将触摸通过视图传递给视图下方的人的正确方式是什么



我有一个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行为中的一个巧合/错误,苹果可能会随着SwiftUI的成熟而修复/改变?

如果没有,正确的触球方式是什么?

您可以在不使用类似的清晰颜色的情况下通过触摸事件

var body: some View {
Rectangle()
.overlay(
Circle()
.fill(.blue)
.allowsHitTesting(false) // <--- Passes through gestures
)
}

Asperi在上面的一条评论中提到了这个解决方案,你也可以在这里找到一个关于这个主题的好博客:https://www.hackingwithswift.com/books/ios-swiftui/disabling-user-interactivity-with-allowshittesting

最新更新