alertViewShouldEnableFirstOtherButton no llamado

Quiero mostrar UIAlertview With textfield. Y si el Usuario no ha ingresado una ID de emai válida, se desactivará el button Aceptar de UIAlertview.

Sé cómo mostrar UIAlertview y deshabilitar el button UIAlertview Ok ..

Mi problema es – (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView no se llama por eso el button está habilitado.

Pero cuando el usuario presiona el button Ok entonces

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 

se llama.

Aquí está mi código,

 -(IBAction)forgotpassBtnclicked:(id)sender { UIAlertView *alertview=[[UIAlertView alloc]initWithTitle:@"" message:@"" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil]; [alertview setAlertViewStyle:UIAlertViewStylePlainTextInput]; UITextField *textField=[alertview textFieldAtIndex:0]; textField.placeholder=@"enter your email id"; [alertview show]; } #pragma mark Alertview delgate - (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView { UITextField *text1=[alertView textFieldAtIndex:0]; BOOL flag=[self validateEmail:text1.text]; return flag; } - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { } #pragma mark Email Validation - (BOOL) validateEmail: (NSString *) email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPnetworkingicate *emailTest = [NSPnetworkingicate pnetworkingicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0; return [emailTest evaluateWithObject:email]; } 

No entiendo lo que estoy haciendo mal? ..

Gracias por adelantado…

UIAlertViewDelegate documentation UIAlertViewDelegate dice para alertViewShouldEnableFirstOtherButton: method,

Enviado al delegado para determinar si el primer button de no cancelación debe habilitarse la alerta.

Está creando la alerta con el button cancelar como @"ok" , ya que los botones sin cancelar son nil el método no recibe una llamada. En su lugar, intente seguir,

 UIAlertView *alertview=[[UIAlertView alloc]initWithTitle:@"" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; 

Además, el usuario debe tener la opción de cancelar la alerta sin tener que ingresar text. Es una buena experiencia de usuario tener un button de cancelar.