首先我们需要给需要限制的UITextField设置代理,然后在其代理方法中实现如下的代码:
代码:
functextField(_textField:UITextField, shouldChangeCharactersIn range:NSRange, replacementString string:String) ->Bool{
//新输入的
ifstring.length==0{
returntrue
}
//第一个参数,被替换字符串的range
//第二个参数,即将键入或者粘贴的string
//返回的是改变过后的新str,即textfield的新的文本内容
letcheckStr = (textField.textasNSString?)?.replacingCharacters(in: range, with: string)
//正则表达式(只支持两位小数)
let regex = "^\\-?([1-9]\\d*|0)(\\.\\d{0,2})?$"
//判断新的文本内容是否符合要求
returnself.isValid(checkStr: checkStr!, regex: regex)
}
//检测改变过的文本是否匹配正则表达式,如果匹配表示可以键入,否则不能键入
funcisValid(checkStr:String, regex:String) ->Bool{
letpredicte =NSPredicate(format:"SELF MATCHES %@", regex)
returnpredicte.evaluate(with: checkStr)
}