2011-03-11 11 views
7

Estoy trabajando en una aplicación TabBar. En una vista hay una UISearchBar y, cuando se presiona, aparece el teclado.Teclado oculta TabBar

El problema es que el teclado oculta la barra de pestañas.

¿Sabes cómo solucionarlo?

+0

Cuando el usuario se concentra en escribir algo para buscar en la barra de búsqueda, ¿por qué quiere las pestañas que se muestran? – Viraj

+0

También diría que es un comportamiento estándar y no debería cambiar eso. –

+0

@Viraj mis comentarios lo quieren, no es mi culpa: P – JAA

Respuesta

0

Que yo sepa, no puedes mover el teclado .. así que intenta utilizar la transformación para mover la lengüeta-bar por encima del teclado

Tomado de here

Otra link

13

Ha sido un tiempo desde que esto era preguntó, pero en aras de la documentación, aquí va: en primer lugar, suscríbase al NSNotificationCenter para recibir la notificación de teclado:

-(void) viewWillAppear:(BOOL)animated 
{ 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillToggle:) 
              name:UIKeyboardWillShowNotification object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillToggle:) 
              name:UIKeyboardWillHideNotification object:nil]; 
} 

no se olvide de darse de baja

- (void)viewWillDisappear:(BOOL)animated 
{ 
[self.view endEditing:YES]; 
[super viewWillDisappear:animated]; 
[[NSNotificationCenter defaultCenter] removeObserver:self 
               name:UIKeyboardWillShowNotification object:nil]; 
[[NSNotificationCenter defaultCenter] removeObserver:self 
               name:UIKeyboardWillHideNotification object:nil]; 
} 

Entonces implementar la función que será llamada por el centro de notificaciones:

- (void) keyboardWillToggle:(NSNotification *)aNotification 
{ 
CGRect frame = [[[self tabBarController] tabBar] frame]; 
CGRect keyboard = [[aNotification.userInfo valueForKey:@"UIKeyboardFrameEndUserInfoKey"] CGRectValue]; 
frame.origin.y = keyboard.origin.y - frame.size.height; 
[UIView animateWithDuration:[[aNotification.userInfo valueForKey:@"UIKeyboardAnimationDurationUserInfoKey"] floatValue] animations:^ 
{ 
    [[[self tabBarController] tabBar] setFrame:frame]; 
}]; 

Esto animará la TabBar al ritmo del teclado y mantenerlo en la parte superior .

+1

Esta debería ser la respuesta aceptada. – Sirens

+0

Recomendaría el uso de 'UIKeyboardDidChangeFrameNotification', de lo contrario tendrá problemas con los teclados divididos http://stackoverflow.com/a/13495680/296446. – Robert

0

Lo solucioné mostrando un teclado personalizado en lugar del uikeyboard nativo.

Descargue el proyecto de muestra de este github enlace.

personalice el teclado con el teclado nativo deseado, ya sea número o palabras.

A continuación, coloque los uibutones debajo del teclado personalizado con controladores tabbar como la imagen que se muestra a continuación. Pruebe esto (futuros visitantes), puede resolver el problema.

enter image description here