Nota:
Consulte a resposta aceita (que não é a mais votada) para a solução a partir do iOS 4.3.
Esta pergunta é sobre um comportamento descoberto no teclado do iPad, onde se recusa a ser descartado se mostrado em uma caixa de diálogo modal com um controlador de navegação.
Basicamente, se eu apresentar o controlador de navegação com a seguinte linha, como abaixo:
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
O teclado se recusa a ser descartado. Se eu comentar esta linha, o teclado desaparecerá bem.
...
Eu tenho dois campos de texto, nome de usuário e senha; o nome de usuário possui o botão Avançar e a senha o botão Concluído. O teclado não desaparecerá se eu apresentar isso em um controlador de navegação modal.
TRABALHO
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
[self.view addSubview:b.view];
NÃO FUNCIONA
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController =
[[UINavigationController alloc]
initWithRootViewController:b];
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[b release];
Se eu remover a parte do controlador de navegação e apresentar 'b' como um controlador de exibição modal por si só, ele funcionará. O controlador de navegação é o problema?
TRABALHO
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
b.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:b animated:YES];
[b release];
TRABALHO
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController =
[[UINavigationController alloc]
initWithRootViewController:b];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[b release];
UINavigationController
aula. Felicidades.
resignFirstResponder
estar executando, mas o teclado ainda está sendo mostrado. Meu cenário (presentationFormSheet com navig contrllr) é exatamente o mesmo que o seu. Muito obrigado !!