- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 TextField 让用户为某物添加价格。为了防止用户将其他值添加为数字,我将键盘类型更改为 .decimalPad
.stringValue
使用每个字符更改的绑定(bind)更新正确。我现在的问题是,doubleValue
仅在用户按回车键提交时更新。不幸的是,小数点没有输入键来提交输入。因此,当我尝试将值保存到我的核心数据对象而不按 Enter 时,会保存 0 而不是文本字段中的可见值(例如 17.12)。现在为了测试,我将使用另一种带有输入按钮的键盘类型,但对于生产,这需要以某种方式修复。
你有什么想法可以解决这个问题吗?下面是一个最小化的示例代码来显示问题。
struct ContentView: View {
@State private var doubleValue: Double = 0.0
@State private var stringValue = "Test"
private let numberFormatter: NumberFormatter = {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
return numberFormatter
}()
var body: some View {
Form {
TextField("", text: $stringValue)
.disableAutocorrection(true)
HStack {
Text("Price")
Spacer()
TextField("", value: $doubleValue, formatter: numberFormatter)
.fixedSize()
.keyboardType(.decimalPad)
}
// show live value changes
Text("\(stringValue)")
Text("Value: \(doubleValue)")
}
.padding()
}
func saveToCoreData() {
// save values into core data
}
}
我正在使用 Xcode 12.2 和 MacOS BigSur 11.0.1。
0
进行初始设置后我输入了
2
然后是
3
.显示值为
2.03
这确实不是我想要的。也许我可以加强你提示的方法。
最佳答案
我有类似的问题。这是我实现的解决方案,因为如果它不是字符串,您将无法检测到类型值。这个想法是将值作为字符串,然后在进一步处理该值之前将其转换为 Double。如果要传递 Double 值,则需要先将其转换为 String,然后再将其绑定(bind)到 TextField。
struct SomeTextField: View {
@State var string: String = ""
@State var double: Double = 0.0
func save() {
double = Double(string)!
}
var body: some View {
VStack {
Text("String: \(string) Double: \(String(double))")
TextField("0.00", text: $string).keyboardType(.decimalPad)
Button(action: save) { Text("Save") }
}
}
关于swiftui - 使用双值识别 SwiftUI TextField 中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65157101/
Java api 有一个关于如何生成 0(含)和 n(不包括)之间整数的方法,但没有生成给定范围(例如 2.0 到 3.0)的 double 值随机数的方法。如何做到这一点? double x =
在 ASP.NET C# 中,我发布了一个值,在回发中我需要将它解析为一个长值。看起来不错,带 float 的值被视为非数字(或至少是非长值)如果发布的值为 50.1 long x=0; long.T
我想要一个包含以下条目的组合框: {"0,5", "1", "1,5", "2", "2,5"} 我使用数据验证: DataValidation dataValidation = null;
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: std::to_string - more than instance of overloaded func
我正在尝试从 Excel 获取 double 值到我的 C# 项目。但是,当我尝试这样做时,Visual Studio 会自动删除逗号/句点,并显示没有它们的数字。 例如: Excel:192,168
这似乎是一个有点模糊的问题 - 但是在我的 UI 中点击我得到一个“无法识别的选择器发送到实例”。堆栈跟踪真的不是很有帮助。一般来说 - 在 Monodevelop 中调试它的最佳方法是什么?任何建议
我是一名优秀的程序员,十分优秀!