Iphone 通知中间

Iphone 通知中间,iphone,objective-c,ios,cocoa-touch,Iphone,Objective C,Ios,Cocoa Touch,现在我正试图编写一个函数,当键盘出现在屏幕上时,向上移动帧。 我开始使用NSN信息中心。我的代码正在工作,但不正确。当键盘出现时,我的formView将向上移动,但当我开始编辑formView中的下一个文本字段时,formView将再次向上移动。我的代码怎么了? 谢谢 - (void)keyboardWillShow:(NSNotification *) aNotification { NSDictionary *userInfo = [aNotification userInfo];

现在我正试图编写一个函数,当键盘出现在屏幕上时,向上移动帧。 我开始使用NSN信息中心。我的代码正在工作,但不正确。当键盘出现时,我的formView将向上移动,但当我开始编辑formView中的下一个文本字段时,formView将再次向上移动。我的代码怎么了? 谢谢

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

}

当键盘消失时,你应该在视图的
原点.y
中再次添加170像素(或Mike建议的任何计算值)。当您单击另一个文本字段时,从技术上讲,当前键盘将消失(您的视图不会做出任何反应),新键盘将出现(您的
键盘将再次显示
,您的视图将再次向上移动170像素)。

您应该再次添加170像素(或根据Mike的建议计算的任何像素)当键盘消失时,转到视图的
原点.y
。当您单击另一个文本字段时,从技术上讲,当前键盘将消失(您的视图不会做出任何反应),并出现一个新键盘(您的
键盘将再次显示
,您的视图将再次向上移动170 px)。

您不应在该代码中硬编码170。您应该阅读文档,它会告诉您如何获得键盘的实际大小。在配备iPad的iOS 5上,键盘可以拆分,因此不应调整框架。这只是一个例子。永远不要硬编码这样的东西。你不应该在这段代码中硬编码170。您应该阅读文档,它会告诉您如何获得键盘的实际大小。在配备iPad的iOS 5上,键盘可以拆分,因此不应调整框架。这只是一个例子。从来没有像这样硬编码的东西。