UITextField中文输入法输入时对字符长度的限制

本文介绍如何使用UITextField并实现文本输入的实时字数统计及限制功能。通过两种方法实现:一是利用addTarget方法,二是使用NSNotificationCenter进行监听。针对中文输入模式,文章提供了额外的处理逻辑。

一 .UITextField添加随值改变的方法


  1. [_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];
            }
        }
    }
}


转载于:https://my.oschina.net/u/2607703/blog/610201

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值