@FocusState 以编程方式生成的 TextField

时间:2021-07-24 21:17:52

标签: swiftui

我正在尝试基于字符串数组创建一个 TextField 列表,当在键盘上按下返回键时,我想创建一个新的 TextField 并使用新的 @FocusState SwiftUI 属性聚焦它

我已经构建了一个这样的视图:

struct ContentView: View {
    
    @State var list: [String] = [""]
    
    @FocusState private var focusField: Int?
    
    var body: some View {

        List {
            ForEach($list.indices, id: \.self) { idx in
                TextField("placeholder", text: $list[idx])
                    .focused($focusField, equals: idx)
                    .submitLabel(.next)
                    .onSubmit {
                        list.insert("", at: idx + 1)
                        focusNextField(from: idx)
                    }
            }
        }

    }
    
    private func focusNextField(from index: Int) {
        focusField = index + 1
    }
}

问题出在 focusNextField(from index: Int) 方法中,如果我在 focusField = index + 1 之后打印 focusField,它会给我与 index 相同的值。知道我该如何解决这个问题吗?

0 个答案:

没有答案