UITextField: mueve la vista cuando aparece el teclado

Actualmente estoy trabajando en una aplicación de iPhone con una sola vista, que tiene múltiples UITextFields para la entrada. Cuando el teclado muestra, superpone los campos de texto inferiores. Así que agregué el correspondientetextFieldDidBeginEditing: Método, para mover la vista hacia arriba, lo que funciona muy bien:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    if ( ( textField != inputAmount ) && ( textField != inputAge ) ) {
        NSTimeInterval animationDuration = 0.300000011920929;
        CGRect frame = self.view.frame;
        frame.origin.y -= kOFFSET_FOR_KEYBOARD;
        frame.size.height += kOFFSET_FOR_KEYBOARD;
        [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
        [UIView setAnimationDuration:animationDuration];
        self.view.frame = frame;
        [UIView commitAnimations];      
    }
}

Este método verifica, si la fuente del mensaje es uno de los campos de texto que están visibles cuando se muestra el teclado, y si no, mueve la vista hacia arriba.

También agregué eltextFieldDidEndEnditing: Método, que mueve la vista hacia abajo nuevamente (y actualiza algunos objetos del modelo de acuerdo con la entrada modificada):

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if ( ( textField != inputMenge ) && ( textField != inputAlter ) ) {
        NSTimeInterval animationDuration = 0.300000011920929;
        CGRect frame = self.view.frame;
        frame.origin.y += kOFFSET_FOR_KEYBOARD;
        frame.size.height -= kOFFSET_FOR_KEYBOARD;
        [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
        [UIView setAnimationDuration:animationDuration];
        self.view.frame = frame;
        [UIView commitAnimations];      
    }
    // Additional Code
}

Sin embargo, esta solución tiene un defecto simple: cuando termino de editar uno de los campos de texto "ocultos" y toco otro campo de texto, el teclado desaparece, la vista se mueve hacia abajo, la vista se mueve hacia arriba nuevamente y el teclado vuelve a aparecer.

¿Existe alguna posibilidad de evitar que el teclado desaparezca y vuelva a aparecer entre dos ediciones (de los campos de texto "ocultos", de modo que la vista solo se mueve cuando el campo de texto seleccionado cambia de uno que estaría oculto por el teclado a uno que no se ocultará) )?

Respuestas a la pregunta(6)

Su respuesta a la pregunta