对于UITextField这个控件,限制其长度,这个貌似很简单的功能,确让我费了好翻周折,正常我们在UITextField的delegate方法中做一下限制就好了。比如:
1 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 2 3 { 4 5 NSInteger strLength = textField.text.length - range.length + string.length; 6 7 return (strLength <= kMaxLength); 8 9 }
如果输入框中输入的是全英文的还好,一旦有中文出现就各种悲催,当你输入中文的时候,会有高亮的英文部分显示出来,这时候也会被delegate接收到,这样就无法按照中文的个数去统计长度,类似这样的效果:
针对这种情况,寻觅各大网站论坛,终于找到了比较合适的办法,实现原理步骤如下:
1. 给UITextField绑定 UIControlEventEditingChanged 事件
2. 在该事件中判断当前是否是中文模式下输入
View Code
3. 是否有高亮部分,如果有,则不进行限制计算,如果没有则按正常方式计算长度
View Code
具体代码参见 https://github.com/appleboyaug/UITextFiled-LimitLength
参考