iOS限制UITextField的输入字符数
来源:互联网 发布:2017 java 编辑:程序博客网 时间:2024/05/16 13:06
欢迎到个人博客: liumh.com查看本文。
本文为原创,未经允许勿转载
项目中经常会遇到限制UITextField中输入字符数的需求,并且会根据输入的英文还是中文给出不同的限定数,本文记录其解决方案。
对于全英文的输入限定很简单,但是输入中文时,当输入拼音但未选择中文时,此时输入文本框的文字会包括输入的拼音,是选中的状态,比如这样:
上面的情况如果打印UITextField的text属性会输出:中国di zhi
。由于拼音是选中状态的,那么可以根据 UITextInput 协议判断UITextField中是否有选中状态的字符,从而决定是否对输入字符进行截断处理。
当UITextField中输入文本发生变化时,会发送 UITextFieldTextDidChangeNotification
,先监听此消息通知:
- (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkTextFieldTextLength:) name:UITextFieldTextDidChangeNotification object:nil];}- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self];}
然后在checkTextFieldTextLength:
消息中处理输入限定:
- (void)checkTextFieldTextLength:(NSNotification *)noti{ UITextField *textField = noti.object; NSString *text = textField.text; NSLog(@"text: %@", text); //记录待选文字记录 UITextRange *markedTextRange = textField.markedTextRange; //如果存在待选文字记录,则暂不处理 if (markedTextRange) { return; } //获取文本的字节长度 NSUInteger lenOfBytes = [text lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; if (text.length == lenOfBytes && text.length > kMaxEnglishLen) { //全英文字符 textField.text = [text substringToIndex:kMaxEnglishLen]; } else if (text.length != lenOfBytes && text.length > kMaxChineseLen) { //包含非英文字符 textField.text = [text substringToIndex:kMaxChineseLen]; }}
另外,可利用UIResponder
的textInputMode
属性获取当前键盘所使用的输入模式,例如使用中文输入法时,在上述checkTextFieldTextLength:
消息中插入:
NSLog(@"textField.textInputMode: %@", [textField.textInputMode primaryLanguage]);
会打印出:
textField.textInputMode: zh-Hans
意味着此时用户正使用中文输入法.
参考:
iOS:UITextField中文输入法输入时对字符长度的限制
如果觉得本文对你有帮助,就请用微信打赏我吧^_^
0 0
- iOS限制UITextField的输入字符数
- iOS-UITextField限制输入的字符个数
- [IOS]UITextField限制字符输入
- 【ios学习记录】- UITextField输入浮点数的限制
- iOS实现UITextField限制输入字符数(比如验证码限制输入6位数,手机号限制11位等)
- UITextField字符输入限制
- UITextField字符输入限制
- UItextField限制字符输入的个数
- 限制 UITextField 输入的字符长度
- UITextField限制输入字符数,自定义placeholder,自定义删除
- ios--uitextfield动态限制输入的字数
- iOS 限制UITextField的输入长度
- iOS uitextField限制输入小数点的位数
- iOS 设置UITextField的输入限制
- 限制UITextField输入字符个数
- iOS关于UITextField限制输入字符操作处理
- [iOS]UITextField和UITextView限制输入字符数量方面
- ios开发之UITextField、UITextView限制最大输入数
- JAVA基础学习(二十六)--正则表达式
- Linux集群系列(负一):VMWare下CentOS7网络设置
- SQL Server2005安装总结
- Java对象初始化
- java按行读取txt文件并按顺序放到map对象里面实例
- iOS限制UITextField的输入字符数
- JAVA基础学习(二十七)--反射机制
- python文件操作之文件写入
- 提升网站性能开发的10个技巧
- java定时器使用
- 类似花生壳的代理本机服务至公网的ngrok以及pagekite
- 详解std::map::erase
- 深度优先算法
- iOS线程的简单学习<1>