热门搜索 :
考研考公
您的当前位置:首页正文

文本框限制以及 提示剩余文字

来源:东饰资讯网

今天看到技术交流群有朋友问一个关于文本框输入文字后,label提示剩余字数的问题,我想想自己也没做过,刚好有时间,那就自己实现下,想想应该是不难,结果是给自己挖了个坑跳,悲剧。
现在我把正确的思路贴上,待会有空讲讲过程出现的坑。

1对文本框的限制

文本框的限制当然是在textfield的代理方法中去实现

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    //计算剩下多少文字可以输入
    if(range.location >= 20)
    {
        return NO;
    }
    else
    {
        return YES;
    }
}

2提示文字如何实现,我用的是通知,记得使用通知要记得移除

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self.fzCollectionView];
    [self.view addSubview:self.textField];
    [self.view addSubview:self.tipLabel];
    self.fzCollectionView.sections = self.dataSource;
    
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldChange) name:UITextFieldTextDidChangeNotification object:nil];
    
}

-(void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

-(void)textFieldChange
{
    if (self.textField.text.length == 0) {
        self.remainTextNum = 20;
    }else{
        self.remainTextNum = 20 - (int)self.textField.text.length;
    }
    self.tipLabel.text = [NSString stringWithFormat:@"还可以输入%d个字符",self.remainTextNum];
}

以上就可以轻松实现了,但是我一开始把提示剩余文字的代码也写到代理里面了,导致提示剩余文字偶尔不对,会偏差一位,那问题出在哪里,就是在range.location这里,感兴趣的同学自己去挖个坑跳跳,我这里就不说怎么坑了。

Top