一 .UITextField添加随值改变的方法
[_textField addTarget:self action:@selector(textFiledDidChange:) forControlEvents:UIControlEventEditingChanged];
二 .设置监听
[[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(textFiledDidChange:)
name:@"UITextFieldTextDidChangeNotification"
object:_textField];
但不管哪种方式,实现的方式是一样的
- (void)textFiledDidChange:(UITextField *)textField
{
if (textField == _textField) {
NSString *toStr = textField.text;
NSLog(@"%lu", (unsigned long)toStr.length);
NSString *lang = textField.textInputMode.primaryLanguage;// 键盘输入模式
if ([lang isEqualToString:@"zh-Hans"]) {// 简体中文输入,包括简体拼音,健体五笔,简体手写
UITextRange *range = [textField markedTextRange];
//获取高亮部分
UITextPosition *position = [textField positionFromPosition:range.start offset:0];
if (!position) {// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (toStr.length > 20) {
_textField.text = [toStr substringToIndex:20];
} // 有高亮选择的字符串,则暂不对文字进行统计和限制
}
} else {// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
if (toStr.length > 20) {
_textField.text = [toStr substringToIndex:20];
}
}
}
}
本文介绍如何使用UITextField并实现文本输入的实时字数统计及限制功能。通过两种方法实现:一是利用addTarget方法,二是使用NSNotificationCenter进行监听。针对中文输入模式,文章提供了额外的处理逻辑。

110

被折叠的 条评论
为什么被折叠?



