使用TextView进行本文输入的时候,一般右下角都会有当前可输入字数限制显示。从最大数到0.达到极限时弹窗显示。
2、让需要监听的TextView控件调用该方法:
这样,每当点击控件开始输入时,便会实时监听字数输入情况。
下面就介绍如何使用监听方法来实现字数显示实时跟新:
1、先构造检测函数:
/**
* 监听输入文字长度
*
* @param obj <#obj description#>
*/
- (void)txtRemarkEditChanged:(NSNotification *)obj {
UITextView *textView = (UITextView *)obj.object;
NSString *toBeString = textView.text;
NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式
if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写
UITextRange *selectedRange = [textView markedTextRange];
//获取高亮部分
UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (!position) {
if (toBeString.length > 30) {
textView.text = [toBeString substringToIndex:30];
numberLabel.text = @"0";
[self showPromptMessage:@"字数已满" andImageNameType:PromptAlert];
}else {
numberLabel.text = [NSString stringWithFormat:@"%d",(30 - toBeString.length)];
}
}
// 有高亮选择的字符串,则暂不对文字进行统计和限制
else{
}
}
// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
else{
if (toBeString.length > 30) {
textView.text = [toBeString substringToIndex:30];
numberLabel.text = @"0";
[self showPromptMessage:@"字数已满" andImageNameType:PromptAlert];//弹窗提醒
}
else {
numberLabel.text = [NSString stringWithFormat:@"%d",(30 - toBeString.length)];//实时显示剩余可输入字数
}
}
}
2、让需要监听的TextView控件调用该方法:
[[NSNotificationCenter defaultCenter]addObserver:self//声明该监听事件
selector:@selector(txtRemarkEditChanged:)//执行方法
name:UITextViewTextDidChangeNotification
object:txtRemark];//目标控件
这样,每当点击控件开始输入时,便会实时监听字数输入情况。