我会调整UITableView
的大小,并在触发此字段时向上滑动包含UIView
的{{1}}。这是两个简单的模型:
现在我有了这段代码:
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
的大小并在键盘隐藏时返回原始高度?
答案 0 :(得分:3)
简短的回答是您需要订阅UIKeyboardWillShowNotification
和UIKeyboardWillHideNotification
。这些通知包含键盘动画的确切参数。
答案很长https://stackoverflow.com/a/8704371/77567。
关于标签栏:我链接的答案假设您想要在解除键盘时将视图向下滑动到屏幕的下边缘。由于您要将其向下滑动到标签栏的边缘,您需要查看键盘是否隐藏或显示(通过选中note.name
)。如果显示,则应将视图的当前帧保存在实例变量中。如果它正在隐藏,您应该将视图的新帧设置为您在实例变量中保存的帧,而不是根据键盘的结束帧设置它。