当键盘出现并启用滚动时,TextField会向上移动

时间:2015-08-17 10:30:37

标签: ios uiscrollview uitextfield

我正在使用带有scrollview的文本字段。每当键盘出现时,滚动都会启用,文本字段会向上移动。但是有一个问题,如果我滚动我的文本字段,然后点击另一个文本字段,它就不会向上移动。

请建议。

2 个答案:

答案 0 :(得分:1)

如果您使用的是scrollView,这将是您的最佳选择。使用TPKeyboardAvoiding。它非常易于使用。

TPKeyboardAvoidingScrollView.mTPKeyboardAvoidingScrollView.h源文件放入项目中,将UIScrollView弹出到视图控制器的xib中,将滚动视图的类设置为TPKeyboardAvoidingScrollView,然后全部放入滚动视图中的控件。您也可以通过编程方式创建它,而无需使用xib - 只需使用TPKeyboardAvoidingScrollView作为顶级视图。

答案 1 :(得分:1)

您可以将文本字段坐标系转换为滚动视图坐标系。使用以下代码

-(void)rearrangeView{
    // previous

    if (txtActiveField == txtUsername) {
        CGPoint pt;
        CGRect rc = [txtUsername bounds];
        rc = [txtUsername convertRect:rc toView:scrollViewLogin];
        pt = rc.origin;
        pt.x = 0;
        pt.y -= 40;
        [scrollViewLogin setContentOffset:pt animated:YES];
    }
    else if (txtActiveField == txtPassword) {
        // [self.txtEmail becomeFirstResponder];
        CGPoint pt;
        CGRect rc = [txtPassword bounds];
        rc = [txtPassword convertRect:rc toView:scrollViewLogin];
        pt = rc.origin;
        pt.x = 0;
        pt.y -= 40;
        [scrollViewLogin setContentOffset:pt animated:YES];
    }
}

#pragma mark- UITextField Delegate
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    txtActiveField = textField;
    //txtActiveField.placeholder = @"";
    [self rearrangeView];

    return YES;
}

这里txtActiveField是UItextField类型的实例变量