Я бы изменил размер UITableView
и сдвинул вверх UIView
, который содержит UITextField
при запуске этого поля. Это два простых макета:
![enter image description here](https://i.stack.imgur.com/yOSz3.png)
Теперь у меня есть этот код:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:0.3];
[UIView setAnimationBeginsFromCurrentState:YES];
[myView setFrame:CGRectMake(myView.frame.origin.x, myView.frame.origin.y - 167, myView.frame.size.width, myView.frame.size.height)]; // 216 (keyboard's height) - 49 (tabbar's height) = 167
[UIView commitAnimations];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:0.3];
[UIView setAnimationBeginsFromCurrentState:YES];
[myView setFrame:CGRectMake(myView.frame.origin.x, myView.frame.origin.y + 167, myView.frame.size.width, myView.frame.size.height)];
[UIView commitAnimations];
return TRUE;
}
Проблема в том, что анимация скольжения клавиатуры и анимация скольжения myView
не являются синхронными. Как сделать эти две анимации совершенно синхронными?
А как изменить размер UITableView
, когда клавиатура видна, и вернуть исходную высоту, когда клавиатура будет скрыта?