在不单击任何地方的情况下一次在 TextField 中键入时更改文本的值 - SwiftUI
Change value of Text while typing in TextField at a time without clicking anywhere - 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)
}
}
有人可以帮忙吗?
SwiftUI 不像 Cocoa。它不是事件驱动的,并且没有从一个接口对象到另一个接口对象的通信。只有数据。数据流经 状态变量 。它按状态变量的 binding 向上 流动,按状态变量的 value 向下 流动.
因此您不需要 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))
}
}
}
我正在尝试在 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)
}
}
有人可以帮忙吗?
SwiftUI 不像 Cocoa。它不是事件驱动的,并且没有从一个接口对象到另一个接口对象的通信。只有数据。数据流经 状态变量 。它按状态变量的 binding 向上 流动,按状态变量的 value 向下 流动.
因此您不需要 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))
}
}
}