UITextField 限制输入中文长度

mac2022-06-30  64

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

转载于:https://www.cnblogs.com/jerryfeng/p/4288185.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)