美文网首页
文本框限制以及 提示剩余文字

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

作者: Sax_Frank | 来源:发表于2016-06-14 15:54 被阅读225次

    今天看到技术交流群有朋友问一个关于文本框输入文字后,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这里,感兴趣的同学自己去挖个坑跳跳,我这里就不说怎么坑了。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/lfsudttx.html