Я передаю Int в TextField вместе с NumberFormatter
private var numberFormatter: NumberFormatter {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.locale = Locale(identifier: "pl")
return numberFormatter
}
TextField(placeholder, value: self.$amount, formatter: self.numberFormatter)
И я ожидаю, что TextField будет включать разделители групп, и это так, но только в исходном состоянии, позже, когда я изменю значение: add и удаляет новые цифры, он работает так же, как с простой строкой, просто игнорирует места, где должны быть разделители.
Если я использую прокси
var amountProxy: Binding<String> {
Binding<String>(
get: { self.numberFormatter.string(from: NSNumber(value: self.amount)) ?? "" },
set: {
let cleanValue = $0.replacingOccurrences(of: self.numberFormatter.groupingSeparator, with: "")
if let value = self.numberFormatter.number(from: cleanValue) {
self.amount = value.intValue
}
}
)
}
TextField(placeholder, text: amountProxy)
Он форматирует его правильно, но когда добавляет новый разделитель, отображает курсор от последней позиции до lastPosition + numberOfSeparators