当我按下我的文本字段时,键盘会隐藏它。所以我已经实现了这个代码来“滚动”视图:
- (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];
}
上面的代码没有问题,但动画没有。
答案 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];