码迷,mamicode.com
首页 > 其他好文 > 详细

UITextField

时间:2015-02-12 15:58:36      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

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

UITextField

标签:

原文地址:http://www.cnblogs.com/jerryfeng/p/4288185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!