2017-07-15 6 views
1

Ich brauche einen Filter nur Dezimal in TextField.Swift 3 Nur in TextFeld dezimal filtern

Ich habe diesen Code:

Func textField (_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
         Let allowedCharacters = CharacterSet.decimalDigits 
         Let characterSet = CharacterSet (charactersIn: string) 
         Return allowedCharacters.isSuperset (of: characterSet) 
     } 

Es funktioniert richtig - dh, es nur Zahlen akzeptiert (dh: 1, 2, 5, 10, 400 usw.). Ich muss noch zB 1,25, 4,65, 23,32 (Dezimalzahlen) akzeptieren.

Weiß jemand, wie man das macht?

Antwort

0

Ändern Sie diese Codezeile

Let allowedCharacters = CharacterSet.decimalDigits 

In

let allowedCharacters = CharacterSet(charactersIn: "1234567890.") 

Grundsätzlich ist die Idee, dass Sie erstellen müssen Sie Inhaber der akzeptierten Zeichen gesetzt, und führen Sie dann die Validierung

Um Ihren Code weiter zu vereinfachen, versuchen Sie es mit

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    if string == "" {return true} 
    return string.rangeOfCharacter(from: CharacterSet(charactersIn: "1234567890.")) == nil ? false : true 
} 
+1

Gebe keinen Code in Kommentaren ein. Es ist nicht lesbar. Bearbeiten Sie Ihre Frage und fügen Sie den Code unten unter einem '## hier ist mein neuer Code' Banner ein. –

+0

@ user1177107 Aktualisiert. ersetze deine Funktion durch meine –

+0

Danke, jetzt arbeiten die Zahlen mit einem Komma. Die Schaltfläche wurde seit dem Löschen von Text deaktiviert. Kannst du es wiederherstellen? :) –