之间切换我有额外的UIView
一种观点认为其实是2 UITextFields
UITextFields
容器当这些文字fiels的成为第一个响应者,我需要将它们移动,因为键盘打开时,文本字段不可见。我处理UIKeyboardDidShowNotification
和UIKeyboardDidHideNotification
和更改与文本字段这样的架式集装箱观点:
的#pragma马克 - 处理
- (void) keyboardIsShown:(NSNotification *)notification {
// Moving up text field while keyboard is opened
CGRect containerFrame = self.viewContainerCredentials.frame;
containerFrame.origin.y -= kCredentialsViewOffset;
[UIView beginAnimations:@"moveUp" context:nil];
[UIView setAnimationDuration:0.5f];
self.viewContainerCredentials.frame = containerFrame;
[UIView commitAnimations];
}
- (void) keyboardIsHidden:(NSNotification *)notification {
// Moving down text field while keyboard is closed
CGRect containerFrame = self.viewContainerCredentials.frame;
containerFrame.origin.y += kCredentialsViewOffset;
[UIView beginAnimations:@"moveDown" context:nil];
[UIView setAnimationDuration:0.5f];
self.viewContainerCredentials.frame = containerFrame;
[UIView commitAnimations];
}
当我激活文本字段中键盘的通知 - 一切工作完美当我关闭键盘时 - 视图容器也正确地向下移动。
但是当我点击第一个字段,并查看容器向上移动,然后我点击并激活第二个文本字段,但不关闭键盘 - 我认为集装箱恢复其最初的框架和键盘下方追溯到。
任何人都可以帮忙吗?为什么会发生?
预先感谢您。
UPD:问题更加严重:那里错误地配置了视图容器的自动布局,在第一响应者每次辞职后被推回。
我猜因为视图容器的y原点已经在行中更改containerFrame.origin.y - = kCredentialsViewOffset;在keyboardIsShown方法中,如果没有隐藏键盘单击第二个文本字段,你确定它调用了keyboardIsShown方法吗? – Vani
Vani,当点击第二个文本字段时,不会抛出键盘通知 - 在第一个文本字段上敲击后键盘已经打开。另外,正如你所看到的,我将动画视图容器向上移动到键盘上方,并且在点击secomd之后它会恢复到原来的状态 –
http://macoscope.com/blog/working-with-keyboard-on-ios/这个链接将帮助你,并请通过这个链接,如果你的textfield的输入配件视图没有设置.http://stackoverflow.com/questions/22549911/why-is-uikeyboardwillshownotification-called-every-time-new-textfield-is -selecte – Vani