一次在TextField中键入内容而无需单击任何位置即可更改Text的值-SwiftUI

时间:2019-09-27 19:04:02

标签: ios textfield swiftui

我正在尝试在 TextField 中键入内容时更改 Text 的值。当我在TextField中键入任何内容时,我想使用Textfield值进行一些计算并将其显示在Text上。在Swift中,我们有UITextField的func textFieldDidChange(_ textField: UITextField)委托方法来跟踪UITextField的更改。

在SwiftUI中,我尝试使用onEditingChanged创建TextField。但不知何故,它并没有进入那个障碍。我不知道自己是否做错了什么。

    @State var totalAmount: String = ""
    @State var addAmount: String = ""
    var body: some View {

            HStack {
                TextField("0.0", text: $totalAmount, onEditingChanged: { _ in
                    self.addAmount = //doing some calculation with totalAmount
                })
                Text(self.addAmount)

            }
    }

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:7)

SwiftUI不像可可。它不是事件驱动的,并且从一个接口对象到另一个接口对象之间没有通信。只有数据。数据通过状态变量流动。它通过状态变量的 binding 流动 up 和通过状态变量的 value 流动 down

因此,您不需要onEditingChanged事件或任何其他事件。 $totalAmount绑定。当文本字段的文本自动更改时,它也会更改。

此外,totalAmount状态变量。如果文本直接或间接使用此值作为其值,则当{{1 }} 变化。

因此,只需使用一个取决于totalAmount的计算变量,并确定Text的值就可以完成。

一个非常基本的例子:

totalAmount