2010-12-08 35 views
1

Je travaille actuellement sur une application iPhone 4 avec une vue d'enregistrement. Les utilisateurs peuvent se concentrer dans un UITextField et j'ai du code qui déplacera la vue vers le haut pour empêcher le clavier de couvrir le champ de texte. Mais si l'application est mise en arrière-plan et ramenée au premier plan, le clavier est toujours actif, le champ de texte est toujours au point, mais la vue est maintenant redescendue dans son état d'origine. Cela couvre le champ de texte.L'application iPhone revenant au premier plan décale la vue vers ses origines et le clavier est toujours visible

Que se passe-t-il? Comment puis-je maintenir la vue ou masquer le clavier lorsque l'application est ramenée au premier plan?

MISE À JOUR:

changements -Tout pour cela sur le nouveau iOS5?

Répondre

0

vous pouvez essayer de faire quelque chose en applicationDidEnterBackground dans votre délégué app comme

NSLog(@"%@", [self.viewController.YOURTEXTFIELD isFirstResponder]); 
if ([self.viewController.YOURTEXTFIELD isFirstResponder]) { 
    [self.viewController.YOURTEXTFIELD resignFirstResponder]; 
} 

les chèques de « isFirstResponder » pour voir si le clavier est actuellement utilisé dans ce point de vue et retourne OUI si elle est et NON si elle n'est pas. Le NSLog est là juste pour que vous sachiez ce qui est passé dans l'instruction if.

0

J'ai solution suivante:

Dans AppDelegate

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 

    // 1. get access to ViewController which is on top 
    // In my case, I have navigation controller in root 

    UIViewController* current_controller = [self.rootNavController.viewControllers lastObject]; 

    // 2. loop all uitextfield. 
    for (UITextField* o_txt in [current_controller.view subviews]) { 
     [o_txt resignFirstResponder]; 
    } 

} 

Regardez comme de "hot fix")