, я прокручиваю UIScrollView вверх, если клавиатура скроет UITextField. Я уменьшаю высоту UIScrollView, если он будет прикрыт, что отлично работает. но когда я пытаюсь увеличить высоту UIScrollView (вернуться к исходному размеру), весь UIScrollView перемещается вверх, а затем анимируется до исходного размера и местоположения. начало координат перемещается вверх на величину X и опускается туда, где оно должно быть, вместо высоты представления, расширяющегося вниз.
- (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];
}
}
поэтому, когда клавиатура скрывается, self.rightScrollView.origin перемещается на X точек, а затем анимируется в нужное место. Мне нужно, чтобы начало координат оставалось на месте, а высота стала больше (растет вниз).
есть идеи, почему он ведет себя глупо?