今天看到技術(shù)交流群有朋友問一個(gè)關(guān)于文本框輸入文字后龙亲,label提示剩余字?jǐn)?shù)的問題陕凹,我想想自己也沒做過,剛好有時(shí)間鳄炉,那就自己實(shí)現(xiàn)下杜耙,想想應(yīng)該是不難,結(jié)果是給自己挖了個(gè)坑跳拂盯,悲劇佑女。
現(xiàn)在我把正確的思路貼上,待會(huì)有空講講過程出現(xiàn)的坑谈竿。
1對(duì)文本框的限制
文本框的限制當(dāng)然是在textfield的代理方法中去實(shí)現(xiàn)
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//計(jì)算剩下多少文字可以輸入
if(range.location >= 20)
{
return NO;
}
else
{
return YES;
}
}
2提示文字如何實(shí)現(xiàn)团驱,我用的是通知,記得使用通知要記得移除
- (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個(gè)字符",self.remainTextNum];
}
以上就可以輕松實(shí)現(xiàn)了,但是我一開始把提示剩余文字的代碼也寫到代理里面了空凸,導(dǎo)致提示剩余文字偶爾不對(duì)嚎花,會(huì)偏差一位,那問題出在哪里劫恒,就是在range.location這里贩幻,感興趣的同學(xué)自己去挖個(gè)坑跳跳,我這里就不說怎么坑了两嘴。