textField输入手机号,只能输入数字,且不超过11位。(无正则)

来源:互联网 发布:idc虚拟主机源码 编辑:程序博客网 时间:2024/05/19 19:55

#pragma mark 手机号

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

    if (textField ==self.phoneField) {

        if (string.length ==0) {returnYES;}

        if (![selfvalidateNumber:string]) {returnNO;}

        

        

        NSInteger existedLength = textField.text.length;

        NSInteger selectedLength = range.length;

        NSInteger replaceLength = string.length;

        if (existedLength - selectedLength + replaceLength >11) {

            returnNO;

        }

    }

    

    returnYES;//YES,表示修改生效;NO,表示不做修改,textField的内容不变



}

- (void)textFieldDidChange:(UITextField *)textField

{

    if (textField ==self.phoneField) {

        if (textField.text.length >11) {

            textField.text = [textField.textsubstringToIndex:11];

        }

    }

}

- (BOOL)validateNumber:(NSString*)number {

    BOOL res =YES;

    NSCharacterSet* tmpSet = [NSCharacterSetcharacterSetWithCharactersInString:@"0123456789"];

    int i =0;

    while (i < number.length) {

        NSString * string = [numbersubstringWithRange:NSMakeRange(i,1)];

        NSRange range = [stringrangeOfCharacterFromSet:tmpSet];

        if (range.length ==0) {

            res = NO;

            break;

        }

        i++;

    }

    return res;

}


0 0
原创粉丝点击