【发布时间】:2016-07-22 01:29:55
【问题描述】:
我正在使用具有小数键盘的 UITextField。所以用户只能输入数字。我希望文本字段自动为每千个用户类型添加逗号。这样用户就可以轻松识别他们正在输入多少。有没有一种通用的方法可以做到这一点?
【问题讨论】:
标签: swift swift2 uitextfield
我正在使用具有小数键盘的 UITextField。所以用户只能输入数字。我希望文本字段自动为每千个用户类型添加逗号。这样用户就可以轻松识别他们正在输入多少。有没有一种通用的方法可以做到这一点?
【问题讨论】:
标签: swift swift2 uitextfield
here 是参考。下面是转换后的 swift 代码。将委托设置为 textField 并实现下面的委托方法。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let cs = NSCharacterSet(charactersInString: "0123456789").invertedSet
let filtered = string.componentsSeparatedByCharactersInSet(cs)
let component = filtered.joinWithSeparator("")
let isNumeric = string == component
// check for input string is numeric value or either a number not a string or character.
if isNumeric {
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.maximumFractionDigits = 10
let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
let numberWithOutCommas = newString.stringByReplacingOccurrencesOfString(",", withString: "")
let number = formatter.numberFromString(numberWithOutCommas)
if number != nil {
let formattedString = formatter.stringFromNumber(number!)
print(number)
print(formattedString)
textField.text = formattedString
} else {
textField.text = nil
}
}
return false
}
【讨论】:
This 答案应该会有所帮助。他们在 shouldChangeCharactersInRange 方法中添加了逗号。 这是 swift 等价物
let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
let formattedNum = formatter.stringFromNumber(10000000)
textField.text = formattedNum
【讨论】: