UITextfield中的iOS Swift十进制输入从右到左

问题描述 投票:0回答:1

这里没有提及的解决方案:

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

ios swift string uitextfield decimal
1个回答
0
投票
  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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.