textFieldDidBeginEditar: no recibir llamadas

Recibí el código a continuación de esta pregunta SO. Estoy intentando deslizar hacia arriba los campos de text cuando comienzo a editar (porque de lo contrario quedan cubiertos por el keyboard del iPhone). Sin embargo, la instrucción log revela que el método textFieldDidBeginEditing no recibe una llamada.

Tengo el código a continuación en dos subclasss diferentes de UIViewController. En uno de ellos, por ejemplo, tengo un campo de text conectado desde el guión gráfico al UIViewController como este

@property (strong, nonatomic) IBOutlet UITextField *mnemonicField; 

Moví el campo de text hacia la parte superior de la vista (es decir, no estaba cubierto por el keyboard) para poder editarlo para intentar desencadenar la instrucción de logging, pero no funcionó. El campo de text funciona de la manera esperada, es decir, los datos que ingrese se guardan en coreData, etc.

¿Puedes explicar qué podría estar haciendo mal?

 - (void)textFieldDidBeginEditing:(UITextField *)textField { NSLog(@"The did begin edit method was called"); [self animateTextField: textField up: YES]; } - (void)textFieldDidEndEditing:(UITextField *)textField { [self animateTextField: textField up: NO]; } - (void) animateTextField: (UITextField*) textField up: (BOOL) up { const int movementDistance = 180; // tweak as needed const float movementDuration = 0.3f; // tweak as needed int movement = (up ? -movementDistance : movementDistance); [UIView beginAnimations: @"anim" context: nil]; [UIView setAnimationBeginsFromCurrentState: YES]; [UIView setAnimationDuration: movementDuration]; self.view.frame = CGRectOffset(self.view.frame, 0, movement); [UIView commitAnimations]; } 

No ha asignado a su delegate de UITextField en su class ViewController :

En el file viewcontroller.m, en el método ViewDidLoad , haga esto:

 self.mnemonicField.delegate=self; 

En su file viewcontroller.h, haga esto:

 @interface YourViewController : ViewController<UITextFieldDelegate> 

Ha creado IBOutlet así que simplemente arrastre su campo de text para verController y configure el delegado

introduzca la descripción de la imagen aquí Luego en .h agregue lo siguiente

 @interface ViewController : ViewController<UITextFieldDelegate> 

Debe configurar el delegado de campo de text en sí mismo. Agregue esta línea para ver el método DidLoad:

 self.mnemonicField.delegate = self; 

y recuerde agregar esta línea <UITextFieldDelegate> para ajustarse a ese protocolo.

Puede lograr el mismo efecto en el guión gráfico mediante el control de arrastre del UITextField deseado para ver el controller y seleccionar el delegado.

En otro caso, si hace clic en cualquier otro button sin mover el foco de Uitextfield, no se invocará el delegado, por lo que debe llamar explícitamente

 yourtextfield.resignFirstResponder()