Tengo problemas con mi código. Estoy tratando de mover UIScrollView
cuando estoy editando un elemento UITextField
que debería estar oculto por la ventana emergente del teclado.
Estoy moviendo el marco principal en este momento porque no sé cómo 'desplazarme hacia arriba' en el código. Entonces, hice un poco de código, está funcionando bien, pero cuando edito un campo de texto de la interfaz de usuario y cambio a otro UITextField
sin presionar el botón 'regresar', la vista principal va muy arriba.
Hice una NSLog()
con mis variables tamaño, distancia y textFieldRect.origin.y como puede ver a continuación. Cuando pongo dos UITextField
en el mismo lugar (origen y) y hago este 'cambio' en particular (sin presionar retorno), obtengo los mismos números, mientras que mi código funcionó bien para la primera UITextField
edición pero no para la segunda edición.
Mira esto:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
{
int size;
CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField];
size = textFieldRect.origin.y + textFieldRect.size.height;
if (change == FALSE)
{
size = size - distance;
}
if (size < PORTRAIT_KEYBOARD_HEIGHT)
{
distance = 0;
}
else if (size > PORTRAIT_KEYBOARD_HEIGHT)
{
distance = size - PORTRAIT_KEYBOARD_HEIGHT + 5; // +5 px for more visibility
}
NSLog(@"origin %f", textFieldRect.origin.y);
NSLog(@"size %d", size);
NSLog(@"distance %d", distance);
CGRect viewFrame = self.view.frame;
viewFrame.origin.y -= distance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
change = FALSE;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
change = TRUE;
CGRect viewFrame = self.view.frame;
viewFrame.origin.y += distance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
}
Algunas ideas ?