Swiftui 停止文本字段中没有数字格式的字符重复
例如,在文本字段中,我希望能够重复所有数字,但用户只能使用小数点一次。因此,用户应该不能执行“12…4”,而只能执行一次“12.4”。有什么特别的方法吗?是否可以在不使用UIKit的情况下使用SwiftUISwiftui 停止文本字段中没有数字格式的字符重复,swiftui,Swiftui,例如,在文本字段中,我希望能够重复所有数字,但用户只能使用小数点一次。因此,用户应该不能执行“12…4”,而只能执行一次“12.4”。有什么特别的方法吗?是否可以在不使用UIKit的情况下使用SwiftUI import SwiftUI import Combine struct TipsView: View { @State private var amount = "" var body: some View { Navigat
import SwiftUI
import Combine
struct TipsView: View {
@State private var amount = ""
var body: some View {
NavigationView {
Form {
Section (header: Text("Amount")) {
HStack (spacing: 1) {
Text("£")
TextField("Amount", text: $amount)
.onReceive(Just(amount)) { _ in
}
}
}
}
}
}
}
我使用了字符串分隔符将输入字符串分隔成两个不同的数组。也就是说,一个数组包含小数点之前的值,另一个数组包含小数点之后的值
import SwiftUI
struct DecimalView: View {
@State private var amount = ""
var body: some View {
Form {
Section(header: Text("Amount")) {
HStack {
Text("£")
TextField("Enter amount", text: $amount)
.onChange(of: amount) { _ in
let filtered = amount.filter {"0123456789.".contains($0)}
if filtered.contains(".") {
let splitted = filtered.split(separator: ".")
if splitted.count >= 2 {
let preDecimal = String(splitted[0])
let afterDecimal = String(splitted[1])
amount = "\(preDecimal).\(afterDecimal)"
}
}
}
}
}
}
}
}
就我在您的案例(包括之前发布的案例)中看到的预期行为而言,最好退后一步,使用UITextField+Delegate完成所有这些操作,并将结果包装在uiviewsrepresentable中。听起来很公平,谢谢