【发布时间】:2017-03-13 12:26:10
【问题描述】:
下面是我用来格式化数字并将其重新分配回文本字段的代码。在删除文本时我遇到了一些问题,完整的文本被删除而不是逐个字符地删除,而且我也无法重新输入文本。请指导我解决这个问题。
let currencyFormatter = NumberFormatter()
let decimalFormatter = NumberFormatter()
var currentString = ""
func formatCurrency(_ string: String) {
let numberFromField = (NSString(string: string).doubleValue)/100
activeField?.text = currencyFormatter.string(from: NSNumber(value: numberFromField))
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if finalTextCount >= maxCharactersLimit && string != ""{
return false
}
switch string {
case "0","1","2","3","4","5","6","7","8","9":
currentString += string
if textField == kmMinTextField || textField == kmMaxTextField {
formatKms(currentString)
} else {
formatCurrency(currentString)
}
default:
if string.characters.count == 0 && currentString.characters.count != 0 {
currentString = String(currentString.characters.dropLast())
if textField == kmMinTextField || textField == kmMaxTextField {
formatKms(currentString)
} else {
formatCurrency(currentString)
}
}
}
return false
}
【问题讨论】:
标签: ios swift uitextfield number-formatting