Gsp*_*Gsp 16 ios swift swiftui
我有一个显示在其他视图之上的 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)
})
}
}
Run Code Online (Sandbox Code Playgroud)
这是使触摸传递到下面的视图的正确方法,还是这只是 SwiftUI 行为中巧合的怪癖/错误,随着 swiftui 的成熟,苹果可能会修复/更改?
如果不是,传递触摸的正确方法是什么?
Sco*_*ant 26
您可以在不使用清晰颜色的情况下传递触摸事件,如下所示:
var body: some View {
Rectangle()
.overlay(
Circle()
.fill(.blue)
.allowsHitTesting(false) // <--- Passes through gestures
)
}
Run Code Online (Sandbox Code Playgroud)
Asperi 在上面的评论中提到了这个解决方案,您还可以在这里找到关于此主题的好博客:https ://www.hackingwithswift.com/books/ios-swiftui/disabling-user-interactivity-with-allowshittesting
| 归档时间: |
|
| 查看次数: |
5645 次 |
| 最近记录: |