1, 使用NSNotification监控变化:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChanged:) name:UITextFieldTextDidChangeNotification object:nil];
2,文本变化事件回调:
- (void)textFieldDidChanged:(NSNotification *)notification { if (_wordsMaxCount > 0) { UITextField *textField = _input_text_textField; NSString *toBeString = textField.text; NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式 if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写 UITextRange *selectedRange = [textField markedTextRange]; //获取高亮部分 UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; if (!position || !selectedRange) { // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 textField.text = [self getString:toBeString withCountLimit:_wordsMaxCount]; } else { // 有高亮选择的字符串,则暂不对文字进行统计和限制 } } else { // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 textField.text = [self getString:toBeString withCountLimit:_wordsMaxCount]; } } }
3, 字符串截取函数:
- (NSString *)getString:(NSString *)toBeString withCountLimit:(NSInteger)limit { NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSData *toBeStringData = [toBeString dataUsingEncoding:encoding]; NSInteger dataLength = [toBeStringData length]; if (dataLength > limit) { NSString *limitString = nil; while (!limitString) { limitString = [[NSString alloc] initWithData:[toBeStringData subdataWithRange:NSMakeRange(0, limit)] encoding:encoding]; limit --; if (limit <= 0) break; } return limitString; } return toBeString; }
4,移除Notification监控
[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];
相关推荐
一个UITextField类的category, 可以一行代码实现对UITextField字数的限制。
IOS中UITextView或UITextField字数限制的实现 UITextView或UITextField字数限制,输入时的限制,复制粘贴时的限制 字数限制有三种方法 在代理方法 “- (BOOL)textField:(UITextField *)textField ...
对UITextField,UITextView增加字符,字节限制,输入字符类型限制 typedef NS_ENUM(NSInteger, XLFTextLimitType) { XLFTextLimitTypeNone, // 无限制 XLFTextLimitTypeByte, // 字节数限制 ...
使用通知,动态获取UITextField中汉字个数
本demo主要是解决一般限制输入字符数量方法存在的一个bug,就是在将要超过限制时输入一串非常长的字符串,选择字符串时会提示超过限制问题;
UITextfield输入框限制的功能封装
主要介绍了IOS 开发之 UITextField限制字数的方法的相关资料,这里提供实现限制最大字数的方法,需要的朋友可以参考下
UITextField、UITextView 限制输入
实现UITextField的键盘隐藏以及为了防止键盘挡住TextField而上移下移
1、限制10个字节,输入2个Emoj之后是8个字节(一个Emoj是4个字节),此时再输入一个中文,看看结果如何(中文的UTF8占3个字节) 2、限制5个字符,一个Emoj是2个字符,其他都是一个。此时输入两个Emoj,再输入中文,...
RTextField 显示输入字符的UITextField
ios限制uitextfield字符长度
类似于支付宝输入数字的UITextField限制,非常实用很多地方都能用到,分享一下。
主要为大家分享了解决iOS7上UITextField限制字数输入导致崩溃问题的方法,感兴趣的小伙伴们可以参考一下
UITextField自动每四格添加一个空格,支持回删
该文档详细列出UITextField常用以及不常用的相关属性及如何进行设置,对大家掌握UITextField的用法很有帮助。
UITextField Demo IOS Objective-C 代码
UITextView 实现UITextField功能