iOS开发若何更好的限制UITextField的输入长度?

2018-03-25  本文已影响10人  MTSu1e丶

前言

实际项目开发中我们会在很多时候遇到输入框要限制字数的情况(如果你登陆注册的时候可能密码用户名要限制几位,或者你在评论一个帖子的时候要限制你评论的字数等等),那么接下来就让我们一起看看到底要怎样处理才能更好的实现对输入长度的控制。

一般同学在看到这个需求的时候首先想到的是使用 UITextFieldDelegate的代理方法就直接控制就可以:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   // return NO to not change text

例如:我们具体需求要限制输入长度为10,那么就会:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (textField == MyTextField) {
        if (textField.text.length > 10) {
            return NO;
        }
    }
    return YES;
}

缺点是:比如说要求控制10个字,当输入到第9个的时候,一下打拼音打出来好几个字,或者点击联想词出来好几个字的话,那么输入框里面的字数就大于10个了。那么应该怎么处理呢?

UITextField有UITextFieldTextDidChangeNotification这个消息通知(注意:监听消息还要记得解除监听)使用方法:

[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange:(UITextField *)textField{
    if (textField == self.titleField) {
        if (textField.text.length > 10) {
            textField.text = [textField.text substringToIndex:10];
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读