UITextFieldanimation完成,但用户触摸后,popup回到原来的位置

我有三个UITextField ,我有一个setFrame:方法的animation。 animation本身效果很好,但是当用户在屏幕上触摸时,问题就出现在animation之前。 发生的是,所有三个UITextField消失了。

有一件事要注意的是,当我按取消,然后按下重新实例化animation的button时, UITextField重新出现,并且仍然具有用户以前input的string。 所以它不是像他们真的消失…只是在视觉上消失,我想。

我得到的代码是:

 - (IBAction)signupPressed:(UIButton *)sender { self.isSigningUp = YES; [UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^{ self.krtiqueButton.alpha = 0.0f; self.krtiqueButton.enabled = NO; self.facebookButton.alpha = 0.0f; self.facebookButton.enabled = NO; } completion:^(BOOL finished){ if (finished) { [self animateSignUpCredentials]; } }]; } - (void)animateSignUpCredentials { [UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^{ self.fullnameTextField.frame = CGRectMake(20, 59, 280, 30); self.emailTextField.frame = CGRectMake(20, 97, 280, 30); self.passwordTextField.frame = CGRectMake(20, 135, 280, 30); self.continueButton.alpha = 1.0f; } completion:nil]; } 

我试着改变setFrame的方式:通过从setFrame改变它到[self.fullnameTextField sefFrame: ...][self.fullnameTextField sefFrame: ...] 。 否则,我真的不能想到什么哈哈。

有人有什么想法?

你是否在使用自动布局(一个iOS 6function,根据称为约束的算术规则来控制控件的放置)? 要查看是否有自动布局,请打开故事板/ NIB,按选项 + 命令1进入“文件检查器”(或者直接点击最右边的面板上的“文件检查器”标签),看看“自动布局”被检查与否。

如果autolayout处于打开状态,即使在更改了框架之后,约束也将重新应用,并且控件将移回到由约束条件指定的位置。 您可以closures自动布局,或者保持自动布局,并以编程方式删除约束或以编程方式更改约束,而不是更改框架。

看到这个答案的一个例子,你可以通过改变约束animation。