我正在使用带有scrollview的文本字段。每当键盘出现时,滚动都会启用,文本字段会向上移动。但是有一个问题,如果我滚动我的文本字段,然后点击另一个文本字段,它就不会向上移动。
请建议。
答案 0 :(得分:1)
如果您使用的是scrollView,这将是您的最佳选择。使用TPKeyboardAvoiding。它非常易于使用。
将TPKeyboardAvoidingScrollView.m
和TPKeyboardAvoidingScrollView.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类型的实例变量