miércoles, 28 de diciembre de 2011

Evitar que el teclado quede sobre los textfields

Uno de los problemas más comunes cuando programamos para iphone es que el teclado puede ocultar los textfields. La solución más rápida es correr los textfields de manera que no queden ocultos pero en mi aplicación yo tenía varios textfields y no me quedaba lugar para correrlos.

Encontré este tutorial http://joshhighland.com/blog/2010/04/20/iphone-keyboard-covers-text-field/ que me pareció que es el que tiene el código más simple y me funciono perfecto.
 
La idea es la siguiente, realizar dos IBAction en este caso slideFrameUp y slideFrameDown que seran llamados por los textfields cuando ocurran los enventos Editing Did Begin y Editing Did End respectivamente (como se muestra en la figura).


El código de los IBAction y del método que llaman los mismos es el siguiente:

-(IBAction) slideFrameUp;
{
    [self slideFrame:YES];
}
 
-(IBAction) slideFrameDown;
{
    [self slideFrame:NO];
}
 
-(void) slideFrame:(BOOL) up
{
    const int movementDistance = 50; // lo que sea necesario, en mi caso yo use 80
    const float movementDuration = 0.3f; // lo que sea necesario
 
    int movement = (up ? -movementDistance : movementDistance);
 
    [UIView beginAnimations: @"anim" context: nil];
    [UIView setAnimationBeginsFromCurrentState: YES];
    [UIView setAnimationDuration: movementDuration];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];
}

No hay comentarios: