Pregunta

Este es un problema extraño, pero estoy perplejo sobre cómo resolver esto, tengo un UITableView Eso tiene UableViewCells personalizados. Cada UITableViewCell tiene dos UITextFields y cada UITextField está vinculado a un delegado que procesa el textFieldDidEndEditing evento. Esto funciona perfectamente, excepto en un caso.

Problema

La pantalla también tiene un botón 'Guardar' y surge el problema cuando el usuario edita un UITextField y hace clic directamente en el botón 'Guardar' sin hacer clic en otra parte de la pantalla. En tal caso, el saveAction el método se invoca antes del textFieldDidEndEditing evento y como resultado se pierde la última edición del usuario.

Traté de depurar usando declaraciones nslog y descubrí que mientras el textFieldDidEndEditing de hecho se llama, se llama después del saveAction evento.

Pensé en llamar al textFieldDidEndEditing evento de saveAction Pero eso no tenía sentido ya que no tendría idea de qué UITextField está siendo editado.

Cualquier sugerencia es muy apreciada.

¿Fue útil?

Solución

Puede tomar una nota del campo de texto que esté activo cuando el método –TextFieldDidBeGineding: Delegate se llama en su controlador de vista

Tenga una propiedad asignada que apunte al campo de texto activo y luego en -Saveaction, envíela -ResignFirSponder.

encabezamiento:

@property (nonatomic, assign) UITextField * editingTextField;

m archivo:

-(void)textFieldDidBeginEditing:(UITextField *)textField{
self.editingTextField = textField;
}

-saveAction{
if(self.editingTextField)
    [self.editingTextField resignFirstResponder];

 //continue implementation
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top