这里没有提及的解决方案:
How to input currency format on a text field (from right to left) using Swift?
为我工作。请不要将此标记为重复。
我无法将UITextField子类化以提供自己的实现。(此UITextField也用于其他地方)。
我看到的唯一方法是使用此方法格式化replaceText字符串(用户输入字符串):
override func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let currentText = textField.text ?? ""
var replacementText = (currentText as NSString).replacingCharacters(in: range, with: string)
}
因此,当用户输入数字时,它应显示为:0.00。
当用户点击1时,我们应该有0.01当用户点击2时,我们应该显示0.12当用户点击3时,我们应该显示1.23当用户点击4时。我们应该显示12.34
private var enteredText: String = ""
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if enteredText.count > 0 && string == "" && range.length == 1 {
//Handles backspace
enteredText.removeLast()
}
else {
enteredText += string
}
return true
}
func textFieldDidChangeCharacter(textField:UITextField) {
if let number = NumberFormatter().number(from: enteredText) {
let double = number.doubleValue/100.0
let string = String(format: "%0.2f", double)
textField.text = string
}
}