zoukankan      html  css  js  c++  java
  • UiTextField对输入的长度进行限制并提示用户还可输入的长度

    最近想做用户昵称的限制,但是网上百度了很多方法效果都不是我自己想要的,终于找到种方法

    如下:

    1、声明两个属性 

    nickname是昵称的textfleld

    canEditSizeLAbel是提示用户剩余可添加的数

    @property (weak, nonatomic) IBOutlet UITextField *nickName;
    @property(nonatomic,strong)UILabel *canEditSizeLabel;//可编辑数的label
    

    2 给textfield添加一个点击事件,用来监听字数的变化

     //给textfield添加一个点击事件用来监听字数的变化
        self.nickName.userInteractionEnabled = YES;
        [self.nickName addTarget:self action:@selector(limitLength:) forControlEvents:UIControlEventEditingChanged];
    

     3、监听用户的输入

    //监听textfield的字数长度的变化
    -(void)limitLength:(UITextField *)sender
    {
        //判断当前输入法是否是中文
        bool isChinese;
        if ([[[UITextInputMode currentInputMode] primaryLanguage] isEqualToString: @"en-US"]) {
            isChinese = false;
        }
        else
        {
            isChinese = true;
        }
        
        
        if(sender == self.nickName) {//判断当前输入框是我想要的输入框
            // 8位
            NSString *str = [[self.nickName text] stringByReplacingOccurrencesOfString:@"?" withString:@""];
            if (isChinese) { //中文输入法下
                UITextRange *selectedRange = [self.nickName markedTextRange];
                //获取高亮部分
                UITextPosition *position = [self.nickName positionFromPosition:selectedRange.start offset:0];
                
                // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
                if (!position) {
    //                NSLog(@"汉字");
                    if ( str.length>8) {//长度大于8时进行截取
                        NSString *strNew = [NSString stringWithString:str];
                        [self.nickName setText:[strNew substringToIndex:8]];
                    }
                    
                    //改变提示信息
                    _canEditSizeLabel.text = [NSString stringWithFormat:@"还可输入%ld个字",8-(self.nickName.text.length)];
                }
                else
                {
    //                NSLog(@"输入的英文还没有转化为汉字的状态");
                    
                }
            }else{//非中文输入法下
    //            NSLog(@"str=%@; 本次长度=%d",str,[str length]);
                if ([str length]>8) {
                    NSString *strNew = [NSString stringWithString:str];
                    [self.nickName setText:[strNew substringToIndex:8]];
                }
                
                
                _canEditSizeLabel.text = [NSString stringWithFormat:@"还可输入%ld个字",8-(self.nickName.text.length)];
            }
        }
    }
    
    对上述的代码,有任何疑问,可以在下方留言。 也可以给我发邮件咨询:673658917@qq.com 或者是直接加qq:673658917 转载请注明出处,谢谢合作。 睡觉舒服,那是给死人准备的,加油吧,一年后你会感谢现在的自己的。
  • 相关阅读:
    打造基于CentOS7的xfce最简工作环境
    Linux下C程序的编辑,编译和运行以及调试
    修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
    TabControl 显示彩色的图示 (XE6 Firemonkey)
    TSwitch 中文简繁显示支持(XE6 Android)
    改变 TMemo 的背景颜色 (Firemonkey)
    修正 XE5 Android 键盘三个问题
    Delphi 收藏
    展示 Popup 的使用方法
    ListView 下拉更新 (支持 Android)
  • 原文地址:https://www.cnblogs.com/lishanshan/p/6150267.html
Copyright © 2011-2022 走看看