2011-10-10 14 views

Respuesta

4

esto buscará un UITextField de correo electrónico correcta.
Agregue este método al textFields delegate y luego verifique si los caracteres que está a punto de cambiar deben agregarse o no.
Volver YES o NO dependiendo de los campos de texto texto actual con respecto a una dirección de correo electrónico válida:

#define ALPHA     @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 
#define NUMERIC     @"1234567890" 
#define ALPHA_NUMERIC   ALPHA NUMERIC 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSCharacterSet *unacceptedInput = nil; 
    if ([[textField.text componentsSeparatedByString:@"@"] count] > 1) { 
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet]; 
    } else { 
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".!#$%&'*+-/=?^_`{|}[email protected]"]] invertedSet]; 
    } 
    return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1); 
} 

Para comprobar si un campo de texto está vacío o no sólo tiene que utilizar if (myTextField.text.length > 0) {} cualquier lugar de su controlador de vista.

+0

http://stackoverflow.com/a/3638271/644149 es buena manera –

0

Si se dirige a iOS 4.0 o superior, también puede considerar NSRegularExpression y hacer una comprobación más matizada de los contenidos de UITextField en las líneas de this, por ejemplo.

3

probar esto: -

if(![emailTextField.text isEqualToString:@""] && ![userNameTextField.text isEqualToString:@""] && ![passwordTextField.text isEqualToString:@""]) 
     { 

     NSString *emailRegEx = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx]; 
     //Valid email address 
     if ([emailTest evaluateWithObject:emailTextField.text] == YES) 
     { 
    } 
    else 
    { 
    //not valid email address 
    } 
} 


     else 
     { 
     //any of the text field is empty 
     } 
6

siguiente código es el uso para la comprobación de la validación del ID de correo electrónico usando la expresión regular (expresion regular).

(BOOL) validateEmail: (NSString *) candidate { 
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0; 
    return [emailTest evaluateWithObject:candidate]; 
} 
+0

con esta expresión regular, nuevos dominios como .museum no funcionará – Martin

5

He utilizado la solución de Mimit pero modifiqué el emailRegex para permitir los nombres más largos como el museo. Entonces, las últimas llaves ahora dicen {2, 6} no {2, 4}. Y lo probé con el nombre más largo y funciona. Gracias Mimit por la solución fácil.

-(BOOL) validateEmail: (NSString *) candidate { 
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0; 
    return [emailTest evaluateWithObject:candidate]; 
} 
Cuestiones relacionadas