2014-09-07 4 views
2

J'ai une cellule qui inclut un champ de texte. Lorsque le viewController est ouvert, je l'ai affecté que ce soit le premier intervenant par le code suivant:Résilier le clavier lorsque viewController est fermé

cell.namTextField.becomeFirstResponder() 

Quand je rejette le viewController le clavier se cache avec un retard, ce qui ne semble pas bon. Comment puis-je résignerTheFirstResponder lorsque le viewController? quand le textField est dans la cellule et je ne peux pas y accéder dans une fonction?

Répondre

8

Vous pouvez utiliser self.view.endEditing(true), qui traversera toutes les sous-vues d'une vue (ici la vue principale du contrôleur) et forcera (c'est la partie true) toute vue qui est actuellement le premier répondant à démissionner.

Je pense que ce serait logique de l'utiliser à l'intérieur viewWillDisappear: afin de cacher le clavier avant que le contrôleur est rejeté (ou un autre est poussé, etc.)

1

Vous pouvez utiliser la ligne de code suivante pour rejeter le clavier.

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil]; 

Cette méthode rejettera tout présent clavier dans l'un de vos vues d'application

1

essayer cette méthode pour cacher le clavier: -

- (void) hideKeyboard:(BOOL)hidden 
{ 
    NSArray *arrWindows = [[UIApplication sharedApplication] windows]; 
    if ([arrWindows count] > 1) 
    { 
     UIWindow *keyboardWindow = [arrWindows objectAtIndex:1]; 
     [keyboardWindow setHidden:hidden]; 
    } 
} 
Questions connexes