iOS UITextField,UITextView中英文混排长度检测

UITextField我们要在输入的时候检测用户输入的文字长度,当达到一定的限度的时候就限制输入了。首先我们添加一个观察。

注册观察者

在这个方法里面我们需要做一些检测,刚开始我是这样做的

iOS UITextField,UITextView中英文混排长度检测_第1张图片
这是刚开始写的

他的不足就是你的中文是50个汉字,英文也是50个字母,是不一样的,我们其实是一个汉字是相当于两个英文。下面的写法就OK了!

iOS UITextField,UITextView中英文混排长度检测_第2张图片
这样写就是OK的

其实这里有一个坑,就是string的length是和cString的length是不一样的,所以你在substringToIndex的时候要注意。

其实上面的写法也是错误的,因为是汉字模式的键盘,你的赋值操作就会出现问题,所以得加上高亮状态的的判断

iOS UITextField,UITextView中英文混排长度检测_第3张图片

还有如果你用byte来计算,一个汉字是三个,一个字母是一个。

byte计算

参考http://outofmemory.cn/code-snippet/3146/objective-c-decide-yingwen-hunhe-charaeter-length-liangzhong-method

你可能感兴趣的:(iOS UITextField,UITextView中英文混排长度检测)