Retraso en el evento UITextfieldDelegate
-
28-10-2019 - |
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.
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
}