2

のサイズを変更し、このフィールドが起動されたときに を含む をUITableView上にスライドさせます。これらは 2 つの単純なモックアップです。UIViewUITextField

ここに画像の説明を入力 ここに画像の説明を入力

今、私はこのコードを持っています:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationBeginsFromCurrentState:YES];

    [myView setFrame:CGRectMake(myView.frame.origin.x, myView.frame.origin.y - 167, myView.frame.size.width, myView.frame.size.height)]; // 216 (keyboard's height) - 49 (tabbar's height) = 167

    [UIView commitAnimations];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationBeginsFromCurrentState:YES];

    [myView setFrame:CGRectMake(myView.frame.origin.x, myView.frame.origin.y + 167, myView.frame.size.width, myView.frame.size.height)];

    [UIView commitAnimations];
    return TRUE;
}

問題は、キーボード スライド アップ アニメーションとmyViewスライド アップ アニメーションが同期していないことです。これら 2 つのアニメーションを完全に同期させるにはどうすればよいですか?

また、キーボードが表示されているときにサイズを変更し、UITableViewキーボードが非表示になったときに元の高さに戻す方法は?

4

1 に答える 1

3

簡単に言うと、とをサブスクライブする必要がありUIKeyboardWillShowNotificationますUIKeyboardWillHideNotification。これらの通知には、キーボードアニメーションの正確なパラメータが含まれています。

長い答えはhttps://stackoverflow.com/a/8704371/77567です。

タブバーについて:私がリンクした答えは、キーボードが閉じられたときにビューを画面の下端までスライドさせたいと想定しています。タブバーの端までスライドさせたいので、キーボードが非表示になっているか表示されているかを確認する必要があります(チェックしてnote.name)。表示されている場合は、ビューの現在のフレームをインスタンス変数に保存する必要があります。非表示になっている場合は、キーボードの終了フレームに基づいて設定するのではなく、ビューの新しいフレームをインスタンス変数に保存したフレームに設定する必要があります。

于 2012-02-05T19:28:47.523 に答える