问题描述
我一直在测试这个简单的 SwiftUI 代码:它在 ContentView
中有一个列表。当点击列表的一个单元格时,它会将一个 SecondList
推入导航堆栈。当这个 SwiftUI 代码在带有触控板的真实 iPad 上运行时,我使用两指滑动来上下滚动列表。 ContentView
中的列表平滑滚动。但是,对于 SecondList
,它可能会随机冻结,然后没有响应。
它在 UIKit 项目中也失败了,我使用 UINavigationView
用 ContentView
替换了 UIHostingViewController
。
它正在使用 iPadOS 14.5 在模拟器和 iPad Pro 硬件和妙控键盘上进行测试。
我该如何解决这个问题?谢谢。
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
List {
ForEach(0..<30,id: \.self) { index in
NavigationLink(
destination: SecondList(),label: {
Text(String(index))
})
}
}
}.navigationViewStyle(StackNavigationViewStyle())
}
}
struct SecondList: View {
var body: some View {
List {
ForEach(0..<30,id: \.self) { index in
Text(String(index))
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
解决方法
使用滚动视图
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
List {
ForEach(0..<30,id: \.self) { index in
NavigationLink(
destination: SecondList(),label: {
Text(String(index))
})
}
}
}.navigationViewStyle(StackNavigationViewStyle())
}
}
struct SecondList: View {
var body: some View {
scrollView {
List {
ForEach(0..<30,id: \.self) { index in
Text(String(index))
}
}
}
}
}