NSNotificationCenter
问题描述:
现在我正试图编写一个函数来在屏幕上出现键盘时向上移动框架。 我开始使用NSNNotificationCenter。我的代码正在工作,但不正确。当键盘出现时,我的formView正在向上移动,但是当我开始编辑formView中的下一个textField时,formView再次向上移动。我的代码有什么问题? 谢谢。NSNotificationCenter
- (void)keyboardWillShow:(NSNotification *) aNotification {
NSDictionary *userInfo = [aNotification userInfo];
CGRect frame = self.formView.frame;
frame.origin.y -= 170;
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration;
[animationDurationValue getValue:&animationDuration];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:animationDuration];
formView.frame = frame;
[UIView commitAnimations];
}
答
你应该再添加170个像素(或任何你计算由麦克的建议)到您的视图的origin.y
当键盘正在消失。当您单击另一个文本字段时,技术上当前键盘将消失(您的视图不会以任何方式作出反应),并且会出现一个新的键盘(您的keyboardWillShow
将再次被调用,并且您再次将视图向上移动170 px)。
你不应该在代码中硬编码170。你应该阅读文档,它会告诉你如何获得真正的键盘大小。在带有iPad的iOS 5上,键盘可以拆分,所以不应该调整框架。这只是一个例子。从不硬编码这样的东西。 – 2012-04-04 09:38:07
好的,谢谢你的评论。 – nikigx2 2012-04-04 09:41:38