UIAlertView capture de champs de text onchange

J'essaie d'implémenter AlertView personnalisé.

L'idée est d'avoir alertview avec textfield et annuler le button.

Ce que je ne peux pas faire est de vérifier textfield en direct pour les caractères entrés. Je sais que je peux le faire en utilisant – alertViewShouldEnableFirstOtherButton: mais je ne veux pas un autre button. Je souhaite faire la même chose juste sans button.

Dans Android, vous pouvez append des écouteurs aux champs de text onchange.

Je ai essayé de le faire en utilisant cette fonction uitextfield, mais il ne se appelle pas en direct ou peut-être que je l'utilise d'une mauvaise façon.

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSsortingng:(NSSsortingng *)ssortingng { textField = [alert textFieldAtIndex:0]; if ([textField.text length] == 0) { NSLog(@"Hello"); return NO; } return NO; } 

Alors, comment le faire correctement?

essaye ça

  UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:NSLocalizedSsortingng(@"New List Item", @"new_list_dialog") message:@"this gets covered" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)]; myTextField.delegate = self; [myTextField setBackgroundColor:[UIColor whiteColor]]; [myAlertView addSubview:myTextField]; [myAlertView show]; [myAlertView release]; 

et méthode textfield

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSsortingng:(NSSsortingng *)ssortingng{ NSLog(@" %@", [textField.text ssortingngByReplacingCharactersInRange:range withSsortingng:ssortingng]); return YES; } 

Vous pouvez append un observateur pour l' UITextFieldTextDidChangeNotification qui sera affiché chaque fois que le text changes dans textfield .

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(controlTextDidChange:) name:UITextFieldTextDidChangeNotification object:[alert textField]]; 

le sélecteur est ci-dessous:

 - (void)controlTextDidChange:(NSNotification *)notification { { if ([notification object] == [alert textField]) { // [alert textField] has changed } } 

EDIT : remove Observer lorsque vous Observer finish

 [[NSNotificationCenter defaultCenter] removeObserver:UITextFieldTextDidChangeNotification];