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

本文介绍了如何使用监听方法,当用户在TextView中输入文字时,实时更新显示剩余字数,并在达到限制时给予提示。通过创建检测函数并添加通知监听,可以确保在中文或非中文输入模式下,都能有效控制输入字数不超过30个。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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];//目标控件

这样,每当点击控件开始输入时,便会实时监听字数输入情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值