2012-09-14 24 views
5

Tengo un UIVIew que es una subvista y contiene varios UITextFields. Uno de estos campos de texto (que es para DATE) no debe ser editable con el teclado, en lugar de esto, uso un PopOver con un Datepicker dentro.UIVIew endEditing: YES no oculta el teclado

Ejecuto un método cuando se alcanza el UIControlEventEditingDidBegin. Este método llama al resignFirstResponder en DateTextField.

Todo funciona bien si DateTextField es el primer campo para editar, pero cuando se edita otro campo de texto y por supuesto muestra el teclado y luego intenta editar el DateField, el teclado no se oculta y todo va normal, pero con Teclado haciendo cualquier cosa.

He intentado llamar al método endEditing:YES antes del resignFirstResponder pero no funciona. He intentado ejecutar endEditing:YES y resignFirstResponder en el método de campo de texto didEndEditing, pero no hay forma de sacar el teclado.

aquí es mi método:

- (void)showDatePopOver:(id)sender{ 
    [self.view endEditing:YES]; 

    UITextField *textField = (UITextField *)sender; 
    [sender resignFirstResponder]; // hide keyboard 

    /** POP OVER LINES**/ 
} 

Respuesta

2

se debe utilizar el método de textFieldShouldBeginEditing: delegado en lugar de renunciar primer nivel de respuesta en didBeginEditing:

Esto permitirá la edición en todos menos en el campo dateTextField texto:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    return (![textField isEqual:dateTextField]); 
} 

Debe especificar que su controlador de vista es un delegado de vista de texto así como (en el nterface declaration [.h file]):

@interface MyViewController : UIViewController <UITextFieldDelegate> 
+0

Muchas gracias, funciona ahora. También tuve que cambiar el evento UIControlEventEditingDidBegin al UIControlEventTouchDown – chost

+0

¡Genial, me alegra que lo hayas solucionado! Feliz codificación. – chown

Cuestiones relacionadas