UITextField 限制输入中文长度

对于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

 

 

参考

1. http://www.tuicool.com/articles/BJZRV3i

2. http://www.th7.cn/Program/IOS/201408/256435.shtml

posted @ 2015-02-12 15:16  船长_jerry  阅读(403)  评论(0编辑  收藏  举报