uitextfield输入字符限制

-(UITextField*)createField:(NSString*)placeholder andTag:(int)tag andFont:(double)font{
    
    UITextField * field =[[UITextField alloc]init];
    field.frame = CGRectMake(0, 0, Main_Width-91, 50);
    field.delegate = self;
    field.userInteractionEnabled = YES;
    field.textAlignment = NSTextAlignmentLeft;
    field.keyboardType = UIKeyboardTypeDefault;
//    field.returnKeyType = UIReturnKeySend;
    field.tag = tag;
    field.placeholder =placeholder;
//    field.text = placeholder;
    field.textColor = littleBlackColor;
    [field setFont:[UIFont fontWithName:@"STHeitiSC" size:font]];
    [field addTarget:self action:@selector(textFieldWithText:) forControlEvents:UIControlEventEditingChanged];
    return field;
}
-(void)textFieldWithText:(UITextField *)textField{

    UITextField * field = (UITextField*)textField;
    switch (textField.tag) {
        case 500://发车单位/收车单位
            if ([self textField:field shouldChangeCharactersInRange:NSMakeRange(0, 0) replacementString:@""]) {
                [dic setObject:field.text forKey:@"unitname"]; //送达单位、收车单位
            }
            break;
        case 501: //联系人
            if ([self textField:field shouldChangeCharactersInRange:NSMakeRange(0, 0) replacementString:@""]) {
                [dic setObject:field.text forKey:@"contact"];
            }
            break;
        case 502://联系电话
            if ([self textField:field shouldChangeCharactersInRange:NSMakeRange(0, 0) replacementString:@""]) {
                [dic setObject:field.text forKey:@"phone"];
            }
            break;
        case 503://详细地址
            if ([self textField:field shouldChangeCharactersInRange:NSMakeRange(0, 0) replacementString:@""]) {
                [dic setObject:field.text forKey:@"address"];
            }
            break;
        default:
            break;
    }
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
{  
//string就是此时输入的那个字符textField就是此时正在输入的那个输入框返回YES就是可以改变输入框的值NO相反
    if ([string isEqualToString:@"
"])  //按会车可以改变
    {
        return YES;
    }
    NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容
    switch (textField.tag) {
        case 500://发车单位/收车单位
            if ([toBeString length] > 20) {
                textField.text = [toBeString substringToIndex:20];
                [self createUIAlertController:@"单位输入不能超过20个字符"];
                return NO;
            }
            break;
        case 501: //联系人
            if ([toBeString length] > 10) {
                textField.text = [toBeString substringToIndex:10];
                [self createUIAlertController:@"联系人输入不能超过10个字符"];
                return NO;
            }
            break;
        case 502://联系电话
            if ([toBeString length] > 11) {
                textField.text = [toBeString substringToIndex:11];
                [self createUIAlertController:@"联系电话输入不能超过11个字符"];
                return NO;
            }
            break;
        case 503://详细地址
            if ([toBeString length] > 30) {
                textField.text = [toBeString substringToIndex:30];
                [self createUIAlertController:@"详细地址输入不能超过30个字符"];
                return NO;
            }
            break;
        default:
            break;
    }

    return YES;
}











原文地址:https://www.cnblogs.com/sayimba/p/5692980.html