Ios UITextView在重新指定第一响应者后还原动画设置帧

Ios UITextView在重新指定第一响应者后还原动画设置帧,ios,objective-c,animation,uitextfield,autolayout,Ios,Objective C,Animation,Uitextfield,Autolayout,我有一个UITextView,当键盘显示如下时,它会为其帧设置动画: - (void)keyboardWasShown:(NSNotification*)n { double duration = [[[n userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; [UIView animateWithDuration:duration de

我有一个UITextView,当键盘显示如下时,它会为其帧设置动画:

- (void)keyboardWasShown:(NSNotification*)n {

  double duration = [[[n userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

  [UIView animateWithDuration:duration
                        delay:0.3
                      options:UIViewAnimationOptionCurveEaseOut
                   animations:^{
                     CGRect tfFrame = self.tf.frame;
                     tfFrame.origin.y = tfFrame.origin.y - kbSize.height + 86.f;
                     [self.tf setFrame:tfFrame];
                   }
                   completion:nil
   ];
}
此文本字段正下方还有另一个UITextField,当键盘出现时,该字段也会设置动画。动画完成后,当键盘出现,我触摸第二个文本字段时,所有动画都会恢复到其原始位置

我已经通过每个UITextField委托方法记录了帧的y值,以试图确定字段的变化位置,并且当第一个字段退出first responder时,它似乎会发生变化:

-(void)textFieldDidBeginEditing:(UITextField *)textField {
  NSLog(@"did begin: %f", self.tf.frame.origin.y);
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
  NSLog(@"did end: %f", self.tf.frame.origin.y);
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
  NSLog(@"should end: %f", self.tf.frame.origin.y);
  return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
  NSLog(@"should return: %f", self.tf.frame.origin.y);
  return YES;
}
从控制台:

2015-03-27 did begin: 521.000000 
2015-03-27 should end: 90.294118
2015-03-27 did end: 521.000000
到目前为止,我已经:

调整框架时尝试修改自动布局约束 试图完全删除自动布局约束
不幸的是,我不知道该怎么办。我认为这是文本字段或自动布局上的第一响应者状态的问题。我应该开始检查什么?

这是由于自动布局。使用“自动布局”时不应设置任何帧。改为通过修改视图的约束来移动视图。@rdelmar您完全正确,谢谢!你能把你的评论作为一个答案,这样我就可以把它标记为正确的吗?我想确保你得到信用。