我想格式化我的数字输入并添加一个“。”。最多三个数字字符(0 <= 999.99)之后...并且能够添加“。”每当我想要...
因此我将文本字段的键盘类型更改为十进制(已经包含点)...
我需要验证0.000 <= 999.999
我需要另一个验证,该验证将允许我在“。”之后键入3个十进制数字。
即
123.456
4.546
or 85.60
我发现的只是其他使用逗号和货币的页面示例,但是每3位数字会添加一个符号...
这是我最好的解决方法:
func textField(_ textField: UITextField, shouldChangeCharactersIn
range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text, let decimalSeparator =
NSLocale.current.decimalSeparator else {
return true
}
var splitText = text.components(separatedBy: decimalSeparator)
let totalDecimalSeparators = splitText.count - 1
let isEditingEnd = (text.count - 3) < range.lowerBound
splitText.removeFirst()
if
splitText.last?.count ?? 0 > 1 && string.count != 0 &&
isEditingEnd
{
return false
}
// If there is already a dot I don't want to allow further dots
if totalDecimalSeparators > 0 && string == decimalSeparator {
return false
}
// Only allow numbers and decimal separator
switch(string) {
case "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", decimalSeparator:
return true
default:
return false
}
}
这是要键入数字(最多10个数字),然后按“。”。点,则仅接受小数点后2位
即
12.30
1540.67
128438.78
任何帮助都可以接受!预先谢谢你!