UITextField: move a visualização quando o teclado aparece

Atualmente estou trabalhando em um aplicativo para iPhone com uma única visualização, que possui vários UITextFields para entrada. Quando o teclado mostra, ele sobrepõe os campos de texto inferiores. Então eu adicionei o correspondentetextFieldDidBeginEditing: método, para mover a vista para cima, o que funciona muito bem:

- (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];      
    }
}

Esse método verifica se a origem da mensagem é um dos campos de texto visíveis quando o teclado é exibido e, caso contrário, move a visualização para cima.

Eu também adicionei otextFieldDidEndEnditing: método, que move a vista para baixo novamente (e atualiza alguns objetos do modelo de acordo com a entrada alterada):

- (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
}

No entanto, essa solução tem uma falha simples: quando termino de editar um dos campos de texto "ocultos" e toco em outro campo de texto, o teclado desaparece, a exibição desce, a vista se move novamente e o teclado reaparece.

Existe alguma possibilidade de impedir que o teclado desapareça e reapareça entre duas edições (dos campos de texto "ocultos" - de modo que a exibição só se move quando o campo de texto selecionado muda de um que seria oculto pelo teclado para um que não estaria oculto? )