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

来源:互联网 发布:语文知错小报 编辑:程序博客网 时间:2024/05/16 09:20
使用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];//目标控件

这样,每当点击控件开始输入时,便会实时监听字数输入情况。
0 0