按下TextField时向上移动UIView

时间:2012-05-10 14:58:42

标签: ios xcode uitextfielddelegate

我有2个文本字段,如果单击文本字段(在纵向模式下),键盘不会隐藏textField。但是当我更改为Landscape时,键盘会覆盖textFields。我不知道如何在委托方法中设置框架大小(textFieldShouldBeginEditing,textFieldShouldEndEditing),以便它可以在纵向和横向中工作。或者我应该使用滚动视图? enter image description here

enter image description here

3 个答案:

答案 0 :(得分:3)

您必须使用scrollView并将其他UI元素作为ScrollView的子视图。 scrollView的框架大小即使在Landscape Mode也应该使用整个窗口大小(为此你需要学习autoresizingmask)..然后当你调用textFieldkeyboard 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时更改内容偏移。