1

現在、キーボードが画面に表示されたときにフレームを上に移動する関数を作成しようとしています。NSNNotificationCenter を使い始めました。私のコードは機能していますが、正しくありません。キーボードが表示されると、formView が上に移動しますが、formView で次の textField の編集を開始すると、formView が再び上に移動します。コードの何が問題になっていますか? ありがとう。

- (void)keyboardWillShow:(NSNotification *) aNotification {
    NSDictionary *userInfo = [aNotification userInfo];

    CGRect frame = self.formView.frame;
    frame.origin.y -= 170;

    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
    NSTimeInterval animationDuration;

    [animationDurationValue getValue:&animationDuration];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:animationDuration];

    formView.frame = frame;

    [UIView commitAnimations];

}
4

1 に答える 1

1

origin.yキーボードが消えているときに、170 ピクセル (または Mike が提案したように計算したもの) をビューに再度追加する必要があります。別のテキスト フィールドをクリックすると、技術的には現在のキーボードが消え (ビューはまったく反応しません)、新しいキーボードが表示されます (keyboardWillShow再度呼び出され、ビューを 170 ピクセル上に移動します)。

于 2012-04-04T09:53:59.053 に答える