Ios 在一次键入TextField时更改文本的值,而无需单击任意位置-SwiftUI
我试图在键入文本字段时更改文本的值。当我在TextField中键入任何内容时,我想用TextField值进行一些计算,并在文本中显示它。在Swift中,我们有Ios 在一次键入TextField时更改文本的值,而无需单击任意位置-SwiftUI,ios,textfield,swiftui,Ios,Textfield,Swiftui,我试图在键入文本字段时更改文本的值。当我在TextField中键入任何内容时,我想用TextField值进行一些计算,并在文本中显示它。在Swift中,我们有func textField didchange(\utextfield:UITextField)UITextField的委托方法来跟踪UITextField的更改。 在SwiftUI中,我尝试使用onEditingChanged创建文本字段。但不知何故,它不会进入那个街区。我不知道我是否做错了什么 @State var total
func textField didchange(\utextfield:UITextField)
UITextField的委托方法来跟踪UITextField的更改。在SwiftUI中,我尝试使用
onEditingChanged
创建文本字段。但不知何故,它不会进入那个街区。我不知道我是否做错了什么
@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)
}
}
有人能帮忙吗?SwiftUI不像可可。它不是事件驱动的,并且没有从一个接口对象到另一个接口对象的通信。只有数据。数据通过状态变量流动。它通过状态变量的绑定向上流动,通过状态变量的值向下流动
因此,您不需要
onEditingChanged
事件或任何其他事件<代码>$totalAmount是一个绑定。当文本字段的文本更改时,它会自动更改
此外,totalAmount
是一个状态变量。如果文本直接或间接将其用作其值,则当totalAmount
更改时,文本将自动更改
因此,只需使用一个依赖于totalAmount
的计算变量,并将其作为文本的值,就完成了
非常基本的例子:
struct ContentView : View {
@State var totalAmount = ""
let addAmount = 10.0 // or whatever
var calc : Double { (Double(totalAmount) ?? 0.0) + addAmount } // or whatever
var body: some View {
HStack {
TextField("Type a number", text: $totalAmount)
.textFieldStyle(RoundedBorderTextFieldStyle())
.frame(width:100)
Text(String(self.calc))
}
}
}
当$totalAmount绑定更改时,
onEditingChanged
不会触发。当视图进入编辑模式时,它将激发。SwiftUI中没有与textFieldDidChange
等效的功能,但是有一些方法可以使用自定义绑定对文本更改进行操作(我现在找不到SO答案,但有一个)。我知道onEditingChanged不起作用。但这就是我尝试过的。你在说这个吗?我知道一个编辑改变是行不通的,但我也试过了。我也在做同样的事情,但我是通过ContentView中的一个函数来计算值的。当我访问该函数时,xcode会在其他地方显示错误,并且代码工作正常。不管怎样,它现在工作得很好!非常感谢你!!