【发布时间】:2015-11-05 12:03:17
【问题描述】:
从 iOS 8 开始,表单中的 UITextFields 的行为非常奇怪。如果我单击另一个文本字段或按键盘上的 Tab,则输入的文本会向上动画,然后快速重新出现。每次加载视图后都会发生这种情况,并且不时发生。
看起来像这样:
我的代码如下所示:
#pragma mark - <UITextFieldDelegate>
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == self.passwordTextField) {
[self loginButtonClicked:nil];
} else if (textField == self.emailTextField) {
[self.passwordTextField becomeFirstResponder];
}
return YES;
}
编辑:
看起来这个问题是由我的键盘监听器引起的:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
- (void)keyboardWillHide:(NSNotification *)sender
{
self.loginBoxBottomLayoutConstraint.constant = 0;
[self.view layoutIfNeeded];
}
- (void)keyboardWillShow:(NSNotification *)sender
{
CGRect frame = [sender.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGRect newFrame = [self.view convertRect:frame fromView:[[UIApplication sharedApplication] delegate].window];
self.loginBoxBottomLayoutConstraint.constant = CGRectGetHeight(newFrame);
[self.view layoutIfNeeded];
}
【问题讨论】:
-
它对我来说很好用。你在使用 UITextField 的第三方子类吗?
-
不,我不知道。这是一个普通的
UITextField,我不使用第 3 方库之类的。 -
你在检查模拟器吗?如果是,您是否使用外接键盘?
-
在模拟器和真机上都是一样的,不管有没有键盘。
-
您能否创建一个带有文本字段的示例项目,因为它真的很难理解可能是什么原因。
标签: ios objective-c animation uitextfield resignfirstresponder