2012-04-19 48 views
9

Mi teclado aparece con una vista de texto, quiero ocultarlo cuando el usuario presiona un botón Atrás en una barra de navegación.Cómo ocultar el teclado después de presionar un botón Atrás de UINavigationBar en ios

He intentado esto:

-(void)viewWillDisappear:(BOOL)animated{ 

    [myTextView resignFirstResponder]; 
} 

y esto:

-(void)viewDidDisappear:(BOOL)animated{ 

    [myTextView resignFirstResponder]; 
} 

Pero esto no funciona, ¿cómo puedo hacer esto?

edición:

he encontrado la solución aquí:

iPad keyboard will not dismiss if modal ViewController presentation style is UIModalPresentationFormSheet

+0

asegurarse de que IBOutlets están encuadernados correctamente y viewDid/WillDisappear están siendo llamados poniendo declaraciones NSLog –

+0

Ni siquiera debe tener renunciar al primer respondedor usted mismo. Cuando la vista sale de la pantalla, debe renunciar automáticamente y el teclado desaparecerá. Puede probar este comportamiento creando un nuevo proyecto para el iphone con la plantilla "Aplicación maestra de detalles". Abra el guión gráfico y vaya a la pantalla de detalles. Agregue un 'UITextField' a la vista y ejecute la aplicación. Cuando toca en el campo, aparece el teclado y cuando presiona el botón Atrás en la barra de navegación desaparece. – DBD

+0

Es cierto pero, pero el caso llega cuando presiono un botón, aparece una hoja de formulario modal con un UINavigationController, presiono otro botón que navega en otra vista, presiono en un textView, aparece el teclado, regreso el viewController anterior y el teclado todavía están presentes. – Anthony

Respuesta

17

poner esto en el método ButtonPress -

[self.view.window endEditing:YES]; 

Editar - esto también le permite obtener el contenido de la texto que se está editando cuando se presiona el botón "Atrás"

+0

para esto, tiene que anular el ítem –

+0

del botón de la barra de navegación izquierda. Lo sé muy bien, aunque – SomaMan

+0

me funciona ... – iSwaroop

2

La combinación de las respuestas anteriores y la comprobación de botón de retroceso se llevará a cabo por esta

- (void)viewWillDisappear:(BOOL)animated{ 
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { 
    // back button was pressed. We know this is true because self is no longer 
    // in the navigation stack. 
    [self.view.window endEditing:YES]; 
} 

[super viewWillDisappear:animated]; 

}

Cuestiones relacionadas