UITextField和UITextView限制字数

在日常开发中碰到限制字数的需求也是常见的,以UITextField为例(UITextView同理),看看如何限制字数。这里我只是简单实现这个功能,如果是字符比较混杂,比如表情,各种类型的文字等的计数不知道这段代码能不能正确限制字数。
首先当然要实现UITextField的代理:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//获取到文本内容
    NSString *content = [textField.text

                      stringByReplacingCharactersInRange:range

                      withString:string];

    if (string.length == 0)
    {
        return YES;
    }

    NSInteger existedLength = textField.text.length;
    NSInteger selectedLength = range.length;
    NSInteger replaceLength = string.length;
    //限制只能输入12个字符
    if (existedLength - selectedLength + replaceLength > 12) {
    //只取前12个字符
        self.uploadOrgName = [textField.text substringToIndex:12];
        return NO;
    }
    //12个字符以下允许继续编辑
    return YES;
}

- (void)textFieldDidChange:(UITextField *)textField
{
//如果当前的textField是你希望编辑的textField,如果字数大于12,那么只显示12个字符,多余的输入舍弃
    if (textField == self.orgNameTextField) {
        if (textField.text.length > 12) {
            textField.text = [textField.text substringToIndex:12];
        }
    }
}

如果需要显示类似7/12这种提示当前输入字数与字数上限的,获取当前显示的字符(content)的长度即可。

猜你喜欢

转载自blog.csdn.net/koptop/article/details/52488570