iOS UITextField输入字数提示以及判断输入字体类型

1.创建UITeextField并设置delegateUITextFieldDelegate

editText = [[UITextField alloc] initWithFrame:CGRectMake(20, 40, ScreenSize.width-40, 40)];

    editText.backgroundColor = [UIColor whiteColor];

    editText.clearButtonMode = UITextFieldViewModeWhileEditing;

    editText.delegate=self;

    editText.font = FONT(14);

    editText.textColor = COLOR(188, 191, 196);

    editText.leftView = leftView;

    editText.leftViewMode = UITextFieldViewModeAlways;

    [editText addTarget:self action:@selector(limitLength:) forControlEvents:UIControlEventEditingChanged];

2.执行方法

-(void)limitLength:(UITextField *)sender

{

    bool isChinese;//判断当前输入法是否是中文

        if ([[editText.textInputMode primaryLanguage] isEqualToString: @"en-US"]) {

            isChinese = false;

        }

        else

        {

            isChinese = true;

        }

    

        if(sender == editText) {

            // 8

            NSString *str = [[editText text] stringByReplacingOccurrencesOfString:@"?" withString:@""];

            if (isChinese) { //中文输入法下

                UITextRange *selectedRange = [editText markedTextRange];

                //获取高亮部分

                UITextPosition *position = [editText positionFromPosition:selectedRange.start offset:0];

                //没有高亮选择的字,则对已输入的文字进行字数统计和限制

                if (!position) {

    

                        if (str.length < 16) {

    

                            numLa.text = [NSString stringWithFormat:@"%lu", 15 - (unsigned long)str.length];

                        }

                        if ( str.length>=16) {

                            NSString *strNew = [NSString stringWithString:str];

                            [editText setText:[strNew substringToIndex:15]];

                        }

                }

                else

                {

                    NSLog(@"输入的英文还没有转化为汉字的状态");

    

                }

            }else{

    //            NSLog(@"str=%@; 本次长度=%lu",str,(unsigned long)[str length]);

                

                    if (str.length < 16) {

    

                        numLa.text = [NSString stringWithFormat:@"%lu", 15 - (unsigned long)str.length];

                    }

                    if ( str.length>=16) {

                        NSString *strNew = [NSString stringWithString:str];

                        [editText setText:[strNew substringToIndex:15]];

                    }

                 }

    }

}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值