当UITextField被触发时,同步向上滑动UIView并调整UITableView的大小

时间:2012-02-05 18:55:55

标签: ios uitableview core-animation uitextfield uitextfielddelegate

我会调整UITableView的大小,并在触发此字段时向上滑动包含UIView的{​​{1}}。这是两个简单的模型:

enter image description here enter image description here

现在我有了这段代码:

UITextField

问题是键盘上滑动画和- (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的大小并在键盘隐藏时返回原始高度?

1 个答案:

答案 0 :(得分:3)

简短的回答是您需要订阅UIKeyboardWillShowNotificationUIKeyboardWillHideNotification。这些通知包含键盘动画的确切参数。

答案很长https://stackoverflow.com/a/8704371/77567

关于标签栏:我链接的答案假设您想要在解除键盘时将视图向下滑动到屏幕的下边缘。由于您要将其向下滑动到标签栏的边缘,您需要查看键盘是否隐藏或显示(通过选中note.name)。如果显示,则应将视图的当前帧保存在实例变量中。如果它正在隐藏,您应该将视图的新帧设置为您在实例变量中保存的帧,而不是根据键盘的结束帧设置它。