如何解决在SwiftUI中仅接受数字和一个小数点的TextField
我正在寻找一种解决此问题的好方法,但是我发现的所有问题都无法满足我的需求。我为此感到挣扎。
我需要一个TextField
,它将只接受0123456789.
格式的%.2f
,并且不需要按Return键即可提交。接收值为Double
,然后返回Double
。
结果应为123.45
或1.23
。
我的尝试:
var title: String
let numberFormatter = NumberFormatter()
@Binding var value: Double
var amountProxy: Binding<String> {
Binding<String>(
get: { String(format: "%.2f",value) },set: {
if let value = numberFormatter.number(from: $0) {
self.value = value.doubleValue
}
}
)
}
var body: some View{
HStack(spacing: 8){
Text(LocalizedStringKey(title + ":"))
.layoutPriority(1)
TextField(LocalizedStringKey(""),text: amountProxy)
.keyboardType(.decimalPad)
.multilineTextAlignment(.trailing)
}
.lineLimit(1)
}
此方法的结果是迫使用户键入一个数字并精确地移动到小数点后以获取请求的值4.20
。像打字,移动,重复一样。用户体验非常差。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。