有时候我们希望限制用户的输入,比如:
1.限制长度
2. 限制Emoji表情符以防服务器内部出错~
3.金额输入限制只能有一个小数点,最多两位小数,一开始输入”.”转化为”0.”等;
一般我们在textField:shouldChangeCharactersInRange:replacementString:代理方法里限制,但如果多个页面都有这种需求,重复代码就多了~
这两天写了几个textField的扩展,来做这件事。
一开始也用的代理封装(用一个自定义类做textfield的代理,重写textField:shouldChangeCharactersInRange:replacementString:方法实现),但后来考虑到可能controller会做textfield的代理并实现该方法,那么textField的代理或者是自定义类,或者是contrller(看时机~),限制输入的代码和controller的代理代码不会都执行,这是个问题~
后来参考了下GitHub,采用给textField添加观察者的方法解决了了。
若需要,请戳这里:UITextField-InputLimit