swift限制UITextField输入小数保留两位小数点

首先我们需要给需要限制的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)

    }

你可能感兴趣的:(swift限制UITextField输入小数保留两位小数点)