0

我正在使用这个示例项目,我想做的是,当您将 aUITextField放在视图上时,当UITextField键盘下方的 in 时,视图会向上移动一点。

我已经使用了这个项目中的TPKeyBoardAvoidingScrollView类。但是,当我单击 时,视图向上移动,一切都很好,但是当我单击背景时,它不仅恢复正常的屏幕尺寸并关闭键盘,而是返回到第一个视图,而不是停留在我们所在的视图在那一刻。UITextField

当键盘弹出时您也可以左右滚动,知道我该如何解决这个问题吗?是我的项目,我将它们都添加在一起。

4

1 回答 1

2

在 TPKeyboardAvoidingScrollView.m 中有一个方法(keyboardWillHide:),当键盘要隐藏时会调用它。在该方法中,滚动视图的内容偏移设置为 CGPointZero,因此您的滚动视图将到达第一个视图控制器。

- (void)keyboardWillHide:(NSNotification*)notification {
    _keyboardRect = CGRectZero;
    _keyboardVisible = NO;

    // Restore dimensions to prior size
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
    [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]];
    self.contentInset = _priorInset;
    //self.contentOffset = CGPointZero;//Replacing this with below line
    self.contentOffset = CGPointMake(self.contentOffset.x, 0);
    [self setScrollIndicatorInsets:self.contentInset];
    _priorInsetSaved = NO;
    [UIView commitAnimations];
}

在编辑文本字段时停止滚动-

- (void)keyboardDidShow:(NSNotification*)notification {
    [self setScrollEnabled:NO];
    //existing code
}

- (void)keyboardWillHide:(NSNotification*)notification {
    [self setScrollEnabled:YES];
    //existing code with modification of content offset
}

请记住,这可能会影响您使用 TPKeyboardAvoidingScrollView 对象的其他视图。

于 2013-03-08T09:59:34.743 回答