我在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(十进制数)。
有谁知道如何做到这一点?
最佳答案
更改此行代码
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
}
关于ios - Swift 3仅在TextField中过滤小数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45120917/