UITextView恢复动画setFrame:在退出第一个响应者之后

当键盘出现时,我有一个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值,以试图确定该字段在哪里更改,并且在第一个字段辞职的第一个响应者时似乎会发生变化:

-(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

到目前为止我有:

  • 尝试修改自动布局约束当我调整框架
  • 试图彻底删除自动布局限制
  • 不幸的是,我不知道该从哪里出发。 我认为这是在文本字段上的第一响应者状态或自动布局的问题。 我应该开始检查什么?

    链接地址: http://www.djcxy.com/p/44309.html

    上一篇: UITextView reverts animated setFrame: after resigning first responder

    下一篇: First Responder Resigns When Editing a Constraint