【发布时间】:2021-12-28 10:04:54
【问题描述】:
我有一个文本字段,用户只能输入 6 位小数,如果有小数,如果没有,则允许他输入用户想要的任意数量的字符。
例如,我允许这个:7472828282 和这个:0,123456,而不是这个:0,2139213773219312。
我当前的实现对于上面的这个例子和当用户从电子键盘进行输入时是好的,但是当用户粘贴一些值时我无法让它工作,例如用户可以粘贴这个值:0,123456789,但我想在小数点后 6 位后截取,实际上是这样的:0,123456,不,我不需要将它舍入到更大的小数点,我需要截取它!
感谢您的帮助,我目前的代码如下
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField === self.amountView.textField {
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 > 5 && string.count != 0 && isEditingEnd {
return false
}
if totalDecimalSeparators > 0 && string == decimalSeparator {
return false
}
}
return true
}
【问题讨论】:
标签: ios swift decimal textfield uipasteboard