MikeB
MikeB

Reputation: 257

iOS Swift decimal input in UITextfield from right to left

None of the solutions mentioned here:

How to input currency format on a text field (from right to left) using Swift?

work for me. Please don't mark this as duplicate.

I cannot subclass UITextField to give my own implementation.(This UITextField is also used elsewhere).

The only way that I see is to format replacementText string (user input string) in this method:

    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)

}

So when user enters a number it should show like this: 0.00.

When the user taps 1. We should have 0.01 When the user taps 2. We should display 0.12 When the user taps 3. We should display 1.23 When the user taps 4. We should display 12.34

Upvotes: 0

Views: 439

Answers (1)

udbhateja
udbhateja

Reputation: 978

  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
    }
}

Upvotes: 0

Related Questions