1

我从堆栈溢出答案中实现了这个功能,第一个答案是当键盘不隐藏文本字段时移动视图

//method to move the view up/down whenever the keyboard is shown/dismissed
-(void)setViewMovedUp:(BOOL)movedUp
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3]; // if you want to slide up the view

    CGRect rect = self.view.frame;
      if (movedUp)
    {
        // 1. move the view's origin up so that the text field that will be hidden come above the keyboard 
        // 2. increase the size of the view so that the area behind the keyboard is covered up.
        rect.origin.y -= kOFFSET_FOR_KEYBOARD;
        rect.size.height += kOFFSET_FOR_KEYBOARD;
    }
    else
    {
        // revert back to the normal state.
        rect.origin.y += kOFFSET_FOR_KEYBOARD;
        rect.size.height -= kOFFSET_FOR_KEYBOARD;
    }
    self.view.frame = rect;

    [UIView commitAnimations];
}

现在它在 ipad 上运行良好。我有一个文本框和它旁边的一些按钮,在它上面有一个带有聊天的文本视图。您使用文本框键入您的聊天。在 iphone 上,它会移动您输入的文本框和向上的按钮,但不会移动文本视图。事实上,它仍然覆盖了大部分窗口,并且按钮在窗口中间的顶部向上移动。

现在我今晚刚刚创建了 iphone 故事板视图(现在有一个视图),并将我所有的控件连接到它,以便在 ipad 上工作。现在该程序仍然可以在 ipad 上正常工作,甚至可以在显示键盘工作时向上移动视图。但在 iphone 上,它会移动除主控制台 UITextView 之外的所有内容。糟糕的是,在您键入时能够阅读文本:) 另外我想了解这里的理论。似乎如果我将视图定义为一个矩形并将其向上移动一些数字,例如 250,它应该全部移动。也许有更好的方法来做到这一点,比如首先获得键盘尺寸,但我仍然希望它能够移动那个高度。

麦克风

4

1 回答 1

1

我添加了对纵向和横向的支持,但修复是在我移动框架后将 iPod 的主控制台(文本视图)重置为纵向(我唯一的 iPod 方向)的位置(我唯一的 iPod 方向)。整个视图被移动了,所以我可以将它设置到同一个位置,它会在上下移动中进行转换。:

double tall = 88;
if(![self isTall])
tall =0;
if (movedUp)
{
// 1. move the view's origin up so that the text field that will be hidden come above the keyboard
// 2. increase the size of the view so that the area behind the keyboard is covered up.
rect.origin.y -= kOFFSET_FOR_KEYBOARD;
rect.size.height += kOFFSET_FOR_KEYBOARD;
self.view.frame = rect;
if ( IDIOM != IPAD )
self._mainConsole.frame = CGRectMake(5, 5, 310, 379 + tall);
}
else
{
// revert back to the normal state.
rect.origin.y += kOFFSET_FOR_KEYBOARD;
rect.size.height -= kOFFSET_FOR_KEYBOARD;
self.view.frame = rect;
if ( IDIOM != IPAD )
self._mainConsole.frame = CGRectMake(5, 5, 310, 379 + tall);
}
于 2013-05-25T18:45:57.700 回答