Esto comprobará un UITextField para un correo electrónico y número de teléfono correctos de 10 dígitos o menos.
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 del campo de texto, el número de caracteres se encuentran actualmente en ella, y lo que los personajes que quiere añadir:
#define ALPHA @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
#define NUMERIC @"1234567890"
#define ALPHA_NUMERIC ALPHA NUMERIC
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *unacceptedInput = nil;
switch (textField.tag) {
// Assuming EMAIL_TextField.tag == 1001
case 1001:
if ([[textField.text componentsSeparatedByString:@"@"] count] > 1)
unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet];
else
unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".!#$%&'*+-/=?^_`{|}[email protected]"]] invertedSet];
break;
// Assuming PHONE_textField.tag == 1002
case 1002:
if (textField.text.length + string.length > 10) {
return NO;
}
unacceptedInput = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
break;
default:
unacceptedInput = [[NSCharacterSet illegalCharacterSet] invertedSet];
break;
}
return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1);
}
Además, echa un vistazo a estos 2 artículos:
Auto-formatting phone number UITextField on the iPhone
PhoneNumberFormatter.
Se ve bien, no he mirado en el campo de texto delegado antes. – sunkencity
chown, esto funciona muy bien, pero no parece manejar eventos clave de eliminación. Devuelve NO si el teléfono es> = 10, por lo tanto, no cambia al eliminar – spentak
Oh, estás en lo cierto. Reemplazar 'if (textField.text.length> = 10)' con 'if (textField.text.length + string.length> 10)' – chown