2017-07-15 9 views
1

TextFieldで10進数のフィルタが必要です。Swift 3 TextFieldでのみ小数点以下をフィルタリングします

私はこのコードを持っている:

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

それが正常に動作します - それは数字(例:1、2、5、10、400など)のみを受け付けます。すなわち。 私はまだ1.25,4.65,23.32(10進数)を受け入れる必要があります。

誰でもこれを行う方法を知っていますか?

答えて

0

変更コード

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

の中へ

Let allowedCharacters = CharacterSet.decimalDigits 

のこのラインは基本的には、アイデアは、あなたが受け入れられた文字のセットを所有作成し、検証に

を行う必要があるということですコードをさらに簡略化するには、これを試してみてください

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

コメントにコードを投稿しないでください。それは判読不能です。あなたの質問を編集し、コードを下の「##新しいコード」バナーの下に貼り付けてください。 –

+0

@ user1177107更新しました。あなたの関数を私のものに置き換えてください –

+0

ありがとうございました。数字はコンマで動作します。テキストを削除してからボタンが無効になっています。あなたはそれを復元できますか? :) –

関連する問題