您的位置:首页 > 其它

使用监听的方法实时检测textView输入内容

2015-11-16 15:23 591 查看
使用TextView进行本文输入的时候,一般右下角都会有当前可输入字数限制显示。从最大数到0.达到极限时弹窗显示。

下面就介绍如何使用监听方法来实现字数显示实时跟新:
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];//目标控件


这样,每当点击控件开始输入时,便会实时监听字数输入情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: