前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UiTextField对输入的长度进行限制并提示用户还可输入的长度

UiTextField对输入的长度进行限制并提示用户还可输入的长度

作者头像
用户1219438
发布2018-02-01 15:45:30
2K0
发布2018-02-01 15:45:30
举报
文章被收录于专栏:AliceAlice

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

如下:

1、声明两个属性 

nickname是昵称的textfleld

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

代码语言:javascript
复制
@property (weak, nonatomic) IBOutlet UITextField *nickName;
@property(nonatomic,strong)UILabel *canEditSizeLabel;//可编辑数的label

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

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

 3、监听用户的输入

代码语言:javascript
复制
//监听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)];
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-12-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档