从 NavigationLink 返回时,防止 SwiftUI ScrollView 滚动到活动的 TextField

问题描述

TextField 中的 SwiftUI ScrollView 处于活动状态时,点击(并从)NavigationLink 中的 ScrollView 将导致 ScrollView滚动到活动的 TextField。如果 TextField 未激活,则保持滚动位置。

有没有办法不管 TextField 的状态如何都保持滚动位置?

以下代码展示了我在 iOS 14 (14.6)、Swift 5 (5.4) 中的问题。

struct Num: View {
    let num: Int
    var body: some View {
        Text(String(num))
    }
}

struct Main: View {
    @State private var input = ""
    
    var body: some View {
        NavigationView {
            ScrollView {
                HStack {
                    TextField("Input",text: $input)
                    Button("Cancel",action: {
                        UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder),to: nil,from: nil,for: nil)
                    })
                }
                ForEach(0 ..< 100,id: \.self) { num in
                    NavigationLink(
                        destination: Num(num: num),label: {
                            Text(String(num))
                        }
                    )
                }
            }
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)