列表不滚动(在 SwiftUI 中——以消除其他问题的歧义)
List not scrolling (in SwiftUI -- to disambiguate from other questions)
使用 SwiftUI,我有一个从 CoreData 检索到的项目列表。我阅读的所有内容都使列表看起来应该是我可以正常滚动的内容,但是在模拟器和 iPad 上的 运行 中,列表都不会滚动。
很明显少了一块,但我似乎找不到那是什么。列表正确填充,但它根本不会滚动。
struct PeopleList : View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(
entity: Person.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \Person.lastName, ascending: true),
NSSortDescriptor(keyPath: \Person.firstName, ascending: true)
]
) var people: FetchedResults<Person>
var body: some View {
ZStack(alignment: .topLeading) {
List(self.people, id: \.self) { person in
Text(person.descriptionForList())
}
}
.frame(width: 400, height: 200)
.modifier(RoundedEdge(width: 4, color: Color(red: 0.6, green: 0.6, blue: 0.6), cornerRadius: 10))
.padding(10)
}
}
没有改变的事情:
- 删除 ZStack { }
- 用简单的
List(0...100, id: \.self) { item in Text("hey \(item)") }
替换列表 -- 仍然不会滚动。
- 将
.frame()
添加到 List() 本身。
- (added) 删除
.frame
.modifier
和 .padding
都一事无成。
这不是关于(以下主题有问答解决它们,但不是这个问题):
- 程序化滚动
- 禁用滚动
- 滚动指示器
- 滚动视图
- UIKit
我如何找到可能阻止 List() 滚动的原因?
事实证明,问题不在于上面提出的结构中的任何内容;这一切都与使用该结构的视图有关。具体来说,当 Color()
—— 即使是 .opacity(0)
—— 位于 ZStack
位于 List()
“上方”时,后者停止滚动。显示正常,但不会滚动。
描述发生的同一件事,尽管情况有所不同。
我会留下这个问题,因为其他人可能和我在同一个地方,“为什么我的 List() 不滚动?”,而不是“为什么我的 List() 不在ZStack 滚动?”希望 13 之后的 Swift 版本能够解决这个问题!
使用 SwiftUI,我有一个从 CoreData 检索到的项目列表。我阅读的所有内容都使列表看起来应该是我可以正常滚动的内容,但是在模拟器和 iPad 上的 运行 中,列表都不会滚动。
很明显少了一块,但我似乎找不到那是什么。列表正确填充,但它根本不会滚动。
struct PeopleList : View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(
entity: Person.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \Person.lastName, ascending: true),
NSSortDescriptor(keyPath: \Person.firstName, ascending: true)
]
) var people: FetchedResults<Person>
var body: some View {
ZStack(alignment: .topLeading) {
List(self.people, id: \.self) { person in
Text(person.descriptionForList())
}
}
.frame(width: 400, height: 200)
.modifier(RoundedEdge(width: 4, color: Color(red: 0.6, green: 0.6, blue: 0.6), cornerRadius: 10))
.padding(10)
}
}
没有改变的事情:
- 删除 ZStack { }
- 用简单的
List(0...100, id: \.self) { item in Text("hey \(item)") }
替换列表 -- 仍然不会滚动。 - 将
.frame()
添加到 List() 本身。 - (added) 删除
.frame
.modifier
和.padding
都一事无成。
这不是关于(以下主题有问答解决它们,但不是这个问题):
- 程序化滚动
- 禁用滚动
- 滚动指示器
- 滚动视图
- UIKit
我如何找到可能阻止 List() 滚动的原因?
事实证明,问题不在于上面提出的结构中的任何内容;这一切都与使用该结构的视图有关。具体来说,当 Color()
—— 即使是 .opacity(0)
—— 位于 ZStack
位于 List()
“上方”时,后者停止滚动。显示正常,但不会滚动。
我会留下这个问题,因为其他人可能和我在同一个地方,“为什么我的 List() 不滚动?”,而不是“为什么我的 List() 不在ZStack 滚动?”希望 13 之后的 Swift 版本能够解决这个问题!