首页 > 解决方案 > TextField iOS 15 事件即将改变,未完成

问题描述

iOS 14:编辑完成时 TextField 更改“值”(键盘隐藏)。

iOS 15:TextField 在编辑期间每次更改都会更改“值”(显示键盘)

是否有可能以某种方式使 iOS 15 中的行为与 iOS 14 中的行为相同?

以下是代码示例:

struct ContentView: View {
    @State private var number: Int = 0
    
    var body: some View {
        VStack {
            Text("Hello, world!")
            Text("number: \(self.number)")
            TextField("Number", value: self.$number, formatter: NumberFormatter())
                .disableAutocorrection(true)
                .background(Color.gray)
        }
        .padding(.horizontal, 100)
    }
}

还存在更新 TextField 中的值的问题(iOS 15):

struct ContentView: View {
    @State private var number: Int = 0
    
    private var bindingNumber: Binding<Int> {
        .init {
            self.number
        } set: {
            self.number = $0 % 10
        }

    }
    
    var body: some View {
        VStack {
            Text("number: \(self.number)")
            TextField("Number", value: self.bindingNumber, formatter: NumberFormatter())
                .disableAutocorrection(true)
                .background(Color.gray)
        }
        .padding(.horizontal, 100)
    }
}

如果您输入“44444”并完成编辑,TextField 不会将其值更改为“4”

标签: swiftuiios15

解决方案


推荐阅读