使用UIScrollView滑动并在使用键盘时向上移动视图

时间:2013-03-08 09:32:16

标签: ios objective-c xcode uiscrollview uitextfield

我正在使用this示例项目,我想要做的是,当您在视图上放置UITextField时,当键盘下方的UITextField时,视图会移动一点点。

我使用了this项目中的TPKeyBoardAvoidingScrollView类。然而,当我点击UITextField时,视图向上移动,一切都很好但是当我点击背景时,它不是恢复正常的屏幕尺寸而是解雇键盘,而是回到第一个视图而不是粘贴在我们那一刻的观点。

当弹出键盘时,你可以左右滚动,任何想法我怎么解决这个问题? Here是我的项目,我将它们加在一起。

1 个答案:

答案 0 :(得分:2)

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

- (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对象的其他视图。