Ich versuche eine UITextField
zu machen, wo die Eingabe dauerhaft im Währungsformat angezeigt wird, obwohl der Benutzer gerade bearbeitet. Es sollte wie arbeiten:UITextField-Anzeige als Währung ohne Dezimalzahl formatiert
$0
Benutzertyp 1
$1
Benutzertyp 2
$12
Benutzertyp 0
$120
Benutzertyp 0
$1,200
Benutzertyp 0
$12,000
Ich schaffe die endgültige Formatierung
textField.text = (numberFormatter.string(from: NSNumber(value: Int(textField.text!)!)))?.components(separatedBy: ".")[0]
erhalten mit NumberFormatter
wie Aber sobald ich den Text in das Textfeld formatieren, werden nachfolgende Eingabe verursachen Fehler wie:
$1,000
Benutzertyp 0
Gibt es sowieso ich kann die Eingabe manipulieren, damit der Benutzer nur Zahlen eingeben muss, aber der Wert in der richtigen Währungsformatierung mit dem Symbol plus Kommas angezeigt wird - z. B. $ 1,200,000. Unabhängig von der Anzahl der Ziffern - aber logisch bis 10 ist genug.
Mein aktueller Textfield shouldChangeCharactersInRange
ist wie folgt:
textField.text = numberFormatter.number(from: textField.text!)?.description
if(range.length == 1){ //Backspace
if(textField.text?.characters.count == 1){
textField.text = "$0"
return false
}
return true
}
if(string.trimmingCharacters(in: CharacterSet.decimalDigits.inverted) == ""){
textField.text = (numberFormatter.string(from: NSNumber(value: Int(textField.text!)!)))?.components(separatedBy: ".")[0]
return false
}
if(string == ".") {
textField.text = (numberFormatter.string(from: NSNumber(value: Int(textField.text!)!)))?.components(separatedBy: ".")[0]
return false
}
textField.text = (numberFormatter.string(from: NSNumber(value: Int(textField.text!.append(string)!)!)))?.components(separatedBy: ".")[0]
return false
auch dankbar, wenn jemand Tipps geben kann mir die Menge der Klammer reduzieren zu helfen, und der Code aussehen sauberer machen, ohne zu viele Zeilen hinzufügen zu müssen. –