• 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 转载请注明出处,谢谢合作。 睡觉舒服,那是给死人准备的,加油吧,一年后你会感谢现在的自己的。
  • 相关阅读:
    JS设计模式(11)中介者模式
    PHP实现微信模板消息发送给指定用户
    PHP浮点精度问题
    PHP微信红包生成算法的程序源码(用抛物线的模型实现)
    PHP队列的实现详细操作步骤
    PHP数组函数实现栈与队列的方法介绍(代码示例)
    Laravel 事务中使用悲观锁
    array_reduce — 用回调函数迭代地将数组简化为单一的值
    PHP上传文件和下载
    php导出xls,报错:文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非你相信它的来源,否则不要打开它。
  • 原文地址:https://www.cnblogs.com/lishanshan/p/6150267.html
Copyright © 2020-2023  润新知