我有2个文本字段,如果单击文本字段(在纵向模式下),键盘不会隐藏textField。但是当我更改为Landscape时,键盘会覆盖textFields。我不知道如何在委托方法中设置框架大小(textFieldShouldBeginEditing,textFieldShouldEndEditing),以便它可以在纵向和横向中工作。或者我应该使用滚动视图?
答案 0 :(得分:3)
您必须使用scrollView
并将其他UI元素作为ScrollView
的子视图。 scrollView
的框架大小即使在Landscape Mode
也应该使用整个窗口大小(为此你需要学习autoresizingmask
)..然后当你调用textField
时keyboard appears
,您需要缩小我们的scrollView
框架的尺寸,即使您的键盘在视图中也可以滚动。
下面是我的textFieldDidBeginEditing和textFieldDidEndEditing方法的代码:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[UIView beginAnimations: nil context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: 0.2];
scrollView.frame = CGRectMake(0,0,320,150);
[scrollView scrollRectToVisible:textField.frame animated:YES];
[UIView commitAnimations];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self autoCalculateDownPayment];
[UIView beginAnimations: nil context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: 0.2];
scrollView.frame = CGRectMake(0,0,320,416);
[UIView commitAnimations];
}
答案 1 :(得分:1)
我无法给你一个100%肯定的答案,因为它有点主观,也因为我无法真正看到你的应用程序(打印屏幕会很好)。但是,在我看来,UIScrollView
将是一个很好的答案。另一个选项是为UITextField
设置动画,以便在键盘出现时“向上”。
答案 2 :(得分:1)
您应该将View Controller的框架设置为以(void)textFieldDidBeginEditing:(UITextField *)textField
方法在屏幕中央显示编辑框(例如)。计算应取决于方向。并在(void)textFieldDidEndEditing:(UITextField *)textField
中将框架设置为原始框架。
还有不同的方法,例如使用scrollview并在触摸editbox时更改内容偏移。