¿Por qué UITextField comienza a editar cuando se muestra el controller de visualización en la stack de navigation?

Tengo un UINavigationController único, con un controller de vista raíz arbitrario. Luego, presento el siguiente subclass UITableViewController en la stack de navigation:

@interface BugViewController : UITableViewController <UITextFieldDelegate> @end @implementation BugViewController - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [[UITableViewCell alloc] init]; UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 0, 200, 30)]; [textField setBackgroundColor:[UIColor yellowColor]]; [textField setDelegate:self]; [[cell contentView] addSubview:textField]; return cell; } - (void)textFieldDidBeginEditing:(UITextField *)textField { NSLog(@"did begin editing"); } - (void)textFieldDidEndEditing:(UITextField *)textField { NSLog(@"did end editing"); } @end 

Básicamente, es solo un deviseio UITableViewController con una sola fila, que contiene un solo UITextField.

Repro pasos:

  1. Toque el campo de text
    • "comenzó a editar" se registra, como se esperaba
  2. Toque "<Atrás" en la barra de navigation
    • "Finalizó la edición" se registra, como se esperaba
    • "comenzaron a editar" y "terminaron de editar" se registran nuevamente (¡ inesperado !)

Estoy luchando para entender por qué el campo de text comienza y luego finaliza la edición nuevamente durante la animation posterior.

Tenga en count que puedo evitar este comportamiento anulando la vista viewWillDisappear:animated: y llamando resignFirstResponder en el campo de text, pero todavía no entiendo el problema subyacente.