【发布时间】:2017-11-23 03:56:47
【问题描述】:
我从 SO 借用并修改了一些代码,以解决我试图格式化输入到 UITextFields 中的文本的问题。如果我使用.decimal numberStyle 的NumberFormatter 它可以工作(在我需要的地方添加一个逗号)但是如果我使用.currency 我一旦运行应用程序就无法输入任何内容。 UITextField 不会填充。
我尝试过使用语言环境,但这似乎没有解决任何问题。
我要做的就是在用户开始输入UITextField 时立即在他们输入的数字前面显示“$”符号
不管有没有我正在使用的 digitsOnly 扩展,它都在这样做,所以这似乎不是造成它的原因。
相关代码:
case annualBill!:
if isNumeric {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencySymbol = "$"
let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
let numberWithOutCommas = newString.replacingOccurrences(of: ",", with: "")
let number = formatter.number(from: numberWithOutCommas)
if number != nil {
let formattedString = formatter.string(from: number!)
textField.text = formattedString
values.annualBill = Decimal(string: (textField.text?.digitsOnly)!)
print(values.annualBill ?? "NA")
} else {
textField.text = nil
}
extension String {
var digitsOnly: String {
return components(separatedBy:
NSCharacterSet.decimalDigits.inverted).joined(separator: "")
}
}
【问题讨论】:
标签: ios swift uitextfield nsnumberformatter