2

当该字段被触发时,我会调整 a 的大小UITableView并向上滑动UIView包含 a 的 a 。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滑动画不同步。如何让这两个动画完美同步?

以及如何UITableView在键盘可见时调整大小并在键盘隐藏时返回原始高度?

4

1 回答 1

3

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

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

关于您的标签栏:我链接的答案假设您希望在关闭键盘时将视图向下滑动到屏幕的底部边缘。由于您想将其向下滑动到标签栏的边缘,因此您需要查看键盘是隐藏还是显示(通过检查note.name)。如果它正在显示,您应该将视图的当前帧保存在实例变量中。如果它被隐藏,您应该将视图的新框架设置为您保存在实例变量中的那个框架,而不是根据键盘的结束框架来设置它。

于 2012-02-05T19:28:47.523 回答