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ストーリーボードビュー(現在は1つのビューがあります)を作成し、ipadで動作するすべてのコントロールをそれに接続します。これで、プログラムはipadでも正しく動作し、showkeyboardでビューを上に移動しても動作します。しかし、iPhoneでは、メインコンソールであるUITextView以外のすべてが上に移動します。悪い点は、入力中にテキストを読めることでした:)また、ここで理論を理解したいと思います。ビューを長方形として定義し、250などの数値を上に移動すると、すべて移動するはずです。キーボードのサイズを最初に正確に取得するなど、より良い方法があるかもしれませんが、それでもその高さを移動することを期待しています。

マイク

4

1 に答える 1

1

ポートレートとランドスケープのサポートを追加しましたが、フレームを移動した後、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 に答える