Friday, 14 June 2013

Validate Email and Phone Number in iOS using XCode.


#pragma mark - validate Email And Phone number
- (BOOL) validateEmail: (NSString *) candidate
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:candidate];
}
- (BOOL) textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)textEntered
{
    if(textField)
    {
        NSUInteger currentLength = textField.text.length;
        NSCharacterSet *numbers = [NSCharacterSet decimalDigitCharacterSet];
        if (range.length == 1)
        {
            return YES;
        }
        if ([numbers characterIsMember:[textEntered characterAtIndex:0]])
        {
            if ( currentLength == 3 )
            {
                if (range.length != 1)
                {
                    NSString *firstThreeDigits = [textField.text substringWithRange:NSMakeRange(0, 3)];
                    NSString *updatedText;
                    if ([textEntered isEqualToString:@"-"])
                    {
                        updatedText = [NSString stringWithFormat:@"%@",firstThreeDigits];
                    }
                    else
                    {
                        updatedText = [NSString stringWithFormat:@"%@-",firstThreeDigits];
                    }
                    [textField setText:updatedText];
                }
            }
            else if ( currentLength > 3 && currentLength < 8 )
            {
                if ( range.length != 1 )
                {
                    NSString *firstThree = [textField.text substringWithRange:NSMakeRange(0, 3)];
                    NSString *dash = [textField.text substringWithRange:NSMakeRange(3, 1)];

                    NSUInteger newLenght = range.location - 4;

                    NSString *nextDigits = [textField.text substringWithRange:NSMakeRange(4, newLenght)];

                    NSString *updatedText = [NSString stringWithFormat:@"%@%@%@",firstThree,dash,nextDigits];

                    [textField setText:updatedText];
                }
            }
            else if ( currentLength == 8 )
            {
                if ( range.length != 1 )
                {
                    NSString *areaCode = [textField.text substringWithRange:NSMakeRange(0, 3)];

                    NSString *firstThree = [textField.text substringWithRange:NSMakeRange(4, 3)];

                    NSString *nextDigit = [textField.text substringWithRange:NSMakeRange(7, 1)];

                    [textField setText:[NSString stringWithFormat:@"%@-%@-%@",areaCode,firstThree,nextDigit]];
                }
            }
            NSUInteger proposedNewLength = textField.text.length - range.length + textEntered.length;
            if (proposedNewLength > 12) return NO;
            return YES;
        }
        else
        {
            return NO;
        }
        return YES;
    }
    return YES;
}

No comments:

Post a Comment