estoy en el proceso de desplazar un UIScrollView arriba si el teclado esconderá un UITextField. Reduzco la altura de UIScrollView si se tapa, lo que funciona bien. pero cuando trato de hacer crecer la altura de UIScrollView (de vuelta al tamaño original), todo el UIScrollView sube y luego se anima hasta el tamaño y la ubicación originales. el origen se mueve hacia arriba en una cantidad de X y se mueve hacia abajo a donde debería estar en lugar de hacia la altura de la vista que se expande hacia abajo.redimensionando un UIScrollView con el bloque Animation mueve el origen
- (void)keyboardWillShow:(NSNotification *)n
{
keyboardMove = self.rightScrollView.frame;
offsetMove = self.rightScrollView.contentOffset;
NSDictionary* userInfo = [n userInfo];
CGSize keyboardSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
[UIView animateWithDuration:.25
delay:0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^
{
self.rightScrollView.frame = CGRectMake(self.rightScrollView.frame.origin.x, self.rightScrollView.frame.origin.y, self.rightScrollView.frame.size.width, (self.view.frame.size.height - (self.rightScrollView.frame.origin.y + keyboardSize.height)));
}
completion:nil];
if ((activeTextField.frame.origin.y + activeTextField.frame.size.height) > self.rightScrollView.frame.size.height)
{
float contentOffsetMove = (self.rightScrollView.contentOffset.y + (activeTextField.frame.origin.y - self.rightScrollView.frame.size.height) + activeTextField.frame.size.height + 10);
self.rightScrollView.contentOffset = CGPointMake(self.rightScrollView.contentOffset.x, contentOffsetMove);
}
}
- (void)keyboardWillHide:(NSNotification *)n
{
if ((activeTextField.frame.origin.y + activeTextField.frame.size.height) > self.rightScrollView.frame.size.height)
{
[UIView animateWithDuration:.25
delay:0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^{
[self.rightScrollView setContentOffset:offsetMove animated:YES];
self.rightScrollView.frame = keyboardMove;
}
completion:nil];
}
else
{
[UIView animateWithDuration:.25
delay:0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^{
self.rightScrollView.frame = keyboardMove;
}
completion:nil];
}
}
así, cuando se esconde el teclado, se mueve hacia arriba self.rightScrollView.origin puntos X y luego anima a la ubicación es que debería ser. Necesito el origen para permanecer quieto y la altura se vuelve más (crece hacia abajo).
¿Alguna idea de por qué su comportamiento es ridículo?
has hecho para solucionar este problema? ¿Tengo exactamente el mismo problema y no puedo encontrar una solución para eso? – pnizzle