键盘隐藏另一个视图的文本字段动画

时间:2013-01-10 21:44:57

标签: iphone ios xcode

当我按下我的文本字段时,键盘会隐藏它。所以我已经实现了这个代码来“滚动”视图:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    [self animateTextField: textField up: YES];
}


- (void)textFieldDidEndEditing:(UITextField *)textField
{
    [self animateTextField: textField up: NO];
}

- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
    const int movementDistance = 80; // tweak as needed
    const float movementDuration = 0.3f; // tweak as needed

    int movement = (up ? -movementDistance : movementDistance);

    [UIView beginAnimations: @"anim" context: nil];
    [UIView setAnimationBeginsFromCurrentState: YES];
    [UIView setAnimationDuration: movementDuration];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];
}

UIView我试图这样做是在另一个笔尖。我想因为我有两个UIViews,程序变得混乱,不知道将动画设置为哪一个。

我没有收到任何错误,但动画没有发生。

我已经为我想要动画的视图宣布了UIView“surveyPage”。上面的代码中是否有某些地方我必须指定我要动画的UIView?

更新:

以下建议对我不起作用。我尝试将self.view更改为surveyPage。

在我上面发布的代码之上,我在我的程序中有这个:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];
}

上面的代码没有问题,但动画没有。

1 个答案:

答案 0 :(得分:0)

你在这里指定了UIView:

self.view.frame = CGRectOffset(self.view.frame, 0, movement);

它是self.view

尝试:

[UIView animateWithDuration:movementDuration animations:^{
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
}];

而不是

[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.view.frame = CGRectOffset(self.view.frame, 0, movement);
[UIView commitAnimations];