使用XCode12 Beta 4,我试图将标题区域和ScrollView分开。我已经尝试了VStack和GeometryReader。但是,当我单击标题区域时,将触发其下面的ScrollView项中的导航链接。
如果使用列表,则不会观察到这种不良行为。如果我在XCode 11.6中使用ScrollView并为iOS13构建,则也不会观察到这种不良行为。
VStacks中的ScrollViews或iOS14中的GeometryReaders有什么变化吗?为什么滚动视图在VStack或GeometryReader中的对象下“滑动”?
struct ContentView: View {
var body: some View {
NavigationView{
//GeometryReader { geo in
VStack{
VStack{
Text("Blah")
}//.frame(height: geo.size.height*0.20)
VStack {
ScrollView {
ForEach(0..<10) { i in
NavigationLink(destination: Text("\(i)")) {
cardRow(i: i)
.frame(maxWidth: .infinity)
.foregroundColor(Color(UIColor.label))
.padding()
.background(RoundedRectangle(cornerRadius: 12))
.foregroundColor(Color(UIColor.secondarySystemFill))
.padding()
}
}
}
}//.frame(height: geo.size.height*0.90)
}
}.navigationViewStyle(StackNavigationViewStyle())
}
struct cardRow: View {
var i: Int
var body: some View {
HStack {
VStack {
Text("88")
}.hidden()
.overlay(
VStack{
Text("\(i)")
}
)
Divider()
.background(Color(UIColor.label))
Spacer()
}
}
}
}
最佳答案
这是可行的解决方案(已通过Xcode 12 / iOS 14测试)
VStack {
ScrollView {
ForEach(0..<10) { i in
NavigationLink(destination: Text("\(i)")) {
cardRow(i: i)
.frame(maxWidth: .infinity)
.foregroundColor(Color(UIColor.label))
.padding()
.background(RoundedRectangle(cornerRadius: 12))
.foregroundColor(Color(UIColor.secondarySystemFill))
.padding()
}
}
}.clipped().contentShape(Rectangle()) // << here !!
}
关于ios - ScrollView导航链接在VStack和GeometryReader,XCode12,beta 4中仍然有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63269055/