iOS Swift десятичный ввод в поле UIText справа налево - PullRequest
0 голосов
/ 31 октября 2019

Ни одно из решений, упомянутых здесь:

Как ввести формат валюты в текстовое поле (справа налево) с помощью 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

1 Ответ

0 голосов
/ 31 октября 2019
  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
    }
}
...