Swift 3仅在TextField中

时间:2017-07-15 17:25:58

标签: ios swift

我需要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(十进制数字)。

有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

更改此行代码

Let allowedCharacters = CharacterSet.decimalDigits

进入

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

基本上,我们的想法是你需要创建自己的一组接受字符,然后进行验证

要进一步简化代码,请尝试使用

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
}