2011-07-06 7 views
5

Mon application dispose d'un contrôleur de navigation. Tous mes contrôleurs apparaissent et poussent. Un contrôleur a 12 champs de texte. 2 champs de texte invoquent d'autres contrôleurs. C'est un UIDatePicker, puis avec les méthodes de délégation, nous définissons la date actuelle dans ces deux champs.Impossible de masquer le clavier dans iOS

- (IBAction) beginEditingDateStart:(id) sender{ 
[sender resignFirstResponder]; 

[self.remedyName becomeFirstResponder]; 
[self.remedyName resignFirstResponder]; 
[self.doseName resignFirstResponder]; 
[self.count resignFirstResponder]; 
[self.dateFrom resignFirstResponder]; 
[self.dateTill resignFirstResponder]; 
[self.doseAmount resignFirstResponder]; 

[self.view endEditing:NO]; 
[self.view resignFirstResponder]; 
    DatePickerViewController *dateView = [[DatePickerViewController alloc] initWithNibNameAndKey:@"DatePickerViewController" bundle:[NSBundle mainBundle] key:@"from"]; 
dateView.delegate = self; 
[self.navigationController pushViewController:dateView animated:YES]; 
[dateView release]; 

Le problème est quand je commence à modifier ces deux champs et le clavier est actif, nous allons au contrôleur datepicker avec le clavier et il cache mon datepicker. Je sais que ce problème peut être résolu mais je ne sais pas comment. Aidez-moi, s'il vous plaît.

Répondre

0

Il pourrait être cette ligne qui est la cause du problème:

[self.remedyName becomeFirstResponder]; 

Sinon, vous pouvez faire quelque chose comme ça pour vous assurer que tous les points de vue ont démissionné premier intervenant:

- (void)resignFirstResponderForSubviewsOfView:(UIView *)aView { 

    for (UIView *subview in [aView subviews]) { 

     if ([subview isKindOfClass:[UITextField class]] || [subview isKindOfClass:[UITextView class]]) 
      [(id)subview resignFirstResponder]; 

     [self resignFirstResponderForSubviewsOfView:subview]; 
    } 
} 

Ensuite, appelez comme ça à partir du contrôleur de vue:

[self resignFirstResponderForSubviewsOfView:[self view]]; 
+0

Merci pour votre réponse. Je vérifie votre code mais le clavier ne disparaît pas. J'essaie tout et je vois beaucoup de sujets mais ça n'aide pas. – Oleg

13

Cela demandera à chaque vue de démissionner du premier répondeur.

[self.view endEditing:YES]; 

Comme cela demandera à chaque vue de démissionner premier intervenant tous les autres appels à la démission des premiers intervenants sont redondants. Ils doivent être enlevés et pour réduire le risque d'appeler quelque chose à tort ou à l'extérieur ou se tournent comme

[self.remedyName becomeFirstResponder]; 

Vous pouvez en lire davantage dans les Apple Docs

+0

Merci, mais je le fais aussi. – Oleg

+0

Les arguments 'YES' servent à forcer les vues à démissionner du premier répondeur. Vous avez utilisé 'NON 'alors peut-être une vue n'était pas prête à laisser aller –

+0

J'ai aussi une uiscrollview au-dessus de mon self.view. Si ça aide. – Oleg

Questions connexes