我有一个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
到目前为止,我有:
不幸的是,我不知道从哪里开始。我认为这是文本字段或自动布局的第一响应者状态的问题。我该怎么开始检查?