我需要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(十进制数字)。
有谁知道怎么做?
答案 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
}