How can I make a UITextField move up when the keyboard is present - on starting to edit?

Com o SDK do iOS:

eu tenho umUIView comUITextFields que trazem um teclado. Eu preciso que seja capaz de:

Permitir rolagem do conteúdo doUIScrollView para ver os outros campos de texto uma vez que o teclado é criado

Automaticamente "pule" (rolando para cima) ou diminuindo

Eu sei que preciso de umUIScrollView. Eu tentei mudar a classe do meuUIView para umUIScrollView mas ainda não consigo rolar as caixas de texto para cima ou para baixo.

Eu preciso de umUIView e umUIScrollView? Alguém entra no outro?

O que precisa ser implementado para rolar automaticamente para o campo de texto ativo?

Idealmente, o máximo possível da configuração dos componentes será feito no Interface Builder. Eu gostaria de escrever apenas o código para o que precisa.

Note oUIView (ouUIScrollView) que estou trabalhando é trazido por uma tabbar (UITabBar), que precisa funcionar normalmente.

Edit: Eu estou adicionando a barra de rolagem apenas para quando o teclado aparece. Mesmo que não seja necessário, sinto que fornece uma interface melhor porque o usuário pode rolar e alterar as caixas de texto, por exemplo.

Eu tenho que trabalhar onde eu mudo o tamanho do quadro doUIScrollView quando o teclado sobe e desce. Estou simplesmente usando:

-(void)textFieldDidBeginEditing:(UITextField *)textField { 
    //Keyboard becomes visible
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
                     scrollView.frame.origin.y, 
scrollView.frame.size.width,
scrollView.frame.size.height - 215 + 50);   //resize
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
   //keyboard will hide
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
       scrollView.frame.origin.y, 
     scrollView.frame.size.width,
      scrollView.frame.size.height + 215 - 50); //resize
}

No entanto, isso não "sobe" automaticamente ou centraliza os campos de texto inferiores na área visível, que é o que eu realmente gostaria.

questionAnswers(30)

yourAnswerToTheQuestion