键盘隐藏后iPhone视图未重置

时间:2011-01-26 21:06:44

标签: iphone xcode keyboard-events

我正在使用一本书的示例来向上滑动视图,因为键盘显示它不会掩盖文本字段。

除了我的视图向上滑动并且如果我单击背景以隐藏键盘时没有向下滑动的事实,一切都有效。键盘隐藏但视图保持向上移动。如果我使用返回键隐藏键盘一切正常。以下是我的代码:

- (void)keyboardWillShow:(NSNotification *)notif {
    NSDictionary* info = [notif userInfo];
    NSValue* aValue = [info objectForKey:
                       UIKeyboardBoundsUserInfoKey];
    CGSize keyboardSize = [aValue CGRectValue].size;
    float bottomPoint = (password.frame.origin.y+
                         password.frame.size.height+10);

    scrollAmount = keyboardSize.height -
    (self.view.frame.size.height- bottomPoint);
    if (scrollAmount > 0) {
        moveViewUp = YES;
        [self scrollTheView:YES];
    }
    else
        moveViewUp = NO;
}
- (void)scrollTheView:(BOOL)movedUp {
    [UIControl beginAnimations:nil context:NULL];
    [UIControl setAnimationDuration:0.3];
    CGRect rect = self.view.frame;
    if (movedUp){
        rect.origin.y -= scrollAmount;
    }
    else {
        rect.origin.y += scrollAmount;
    }
    self.view.frame = rect;
    [UIControl commitAnimations];
}

-(BOOL)textFieldShouldReturn:(UITextField *) theTextField {
    [theTextField resignFirstResponder];
    if (moveViewUp) [self scrollTheView:NO];
    return YES;
}

我很难搞清楚为什么在触摸背景隐藏键盘时隐藏键盘之后的动画效果

再次感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

将动画语句中的“UIControl”更改为“UIView”。

答案 1 :(得分:0)

只有在按下键盘上的返回按钮时才会调用textFieldShouldReturn方法。要捕获各种键盘消失,请使用textFieldDidEndEditing

另一种方法是注册UIKeyboardWillHideNotification以及UIKeyboardWillShowNotification