gpt4 book ai didi

点击另一个 TextField 时,SwiftUI TextField 不会提交更改

转载 作者:行者123 更新时间:2023-12-03 09:17:02 33 4
gpt4 key购买 nike

我目前正在我的应用程序中构建一些基本的表单功能,并且在点击另一个 TextField 或在编辑模式下按“完成”时,我遇到了 TextFields 没有更改相关绑定(bind)变量中的值的问题。

    @Binding var jobDetails: JobDetails
@Environment(\.colorScheme) var colorScheme: ColorScheme

...

var body: some View {

...
HStack {
Text("Hourly Rate")
Spacer()
TextField("", value: $jobDetails.hourlyRateBasic, formatter: TextFormatters().currencyFormatter())

.keyboardType(.asciiCapableNumberPad)
.multilineTextAlignment(.trailing)
...

在 iOS 模拟器中,该字段似乎仅在我输入新值(不是模拟器中的软键盘)后物理按下键盘上的返回键时才会更新。我希望 TextField 将其更改为 jobDetails.hourlyRateBasic当点击另一个 TextField 或按“完成”退出编辑模式时。

看来 onEditingChanged当我点击另一个 TextField 时触发,但我不知道如何利用它来更改 jobDetails与新值。

最佳答案

这是 SwiftUI 中 TextField 的典型行为。以下是它的示例以及使 TextField 在键入时更具响应性的替代方法。

import SwiftUI

struct ContentView: View {
@State private var text: String = "0"
@State private var num: Int = 0
private var resultString: String {
if let num = Int(self.text) {
return String(num*num)
}
return "0"
}
private var resultInt: Int {
return self.num*self.num
}
var body: some View {
VStack {
VStack(alignment:.leading) {
Text("Input number as String")
TextField("String Number",text: self.$text)
.textFieldStyle(RoundedBorderTextFieldStyle())
Text("Input number as Int")
TextField("Int Number", value: self.$num, formatter: NumberFormatter())
.textFieldStyle(RoundedBorderTextFieldStyle())
}
Spacer()
Text("From String")
Text("Square of \(self.text) is \(self.resultString)") .font(.title)
Spacer()
Text("From Int")
Text("Square of \(self.num) is \(self.resultInt)") .font(.title)
Spacer()
}.padding()
}
}

关于点击另一个 TextField 时,SwiftUI TextField 不会提交更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57401869/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com