web-dev-qa-db-fra.com

Comment masquer le clavier de la zone de texte lorsque vous appuyez sur le bouton "Terminé / Retour" Xcode 4.2

J'ai créé un champ de texte dans Interface Builder. Je règle "Return Key" sur Done. Ceci est une entrée d'une seule ligne (il n'aura donc pas besoin de plusieurs lignes).

Comment masquer le clavier virtuel lorsque l'utilisateur appuie sur le bouton Terminé?

56
Talon

Implémentez la méthode déléguée UITextFieldDelegate, puis:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.yourIBtextField.delegate = self;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}
154
Paul Hunter

UITextView n'a aucune méthode qui sera appelée lorsque l'utilisateur appuiera sur la touche de retour.

Même dans ce cas, implémentez la méthode textView: shouldChangeTextInRange: replacementText: de UITextViewDelegate et vérifiez si le texte de remplacement est\n, masquez le clavier.

Il y a peut-être d'autres moyens mais je n'en connais aucun.

Assurez-vous de déclarer la prise en charge du protocole UITextViewDelegate.

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
replacementText:(NSString *)text {

    if([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }
    return YES;
}

J'espère que cela aidera beaucoup.

9
Himanshu padia

Créer une catégorie sur UIViewController avec la méthode suivante

- (void)hideKeyboard
{
    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder)
                                               to:nil
                                             from:nil
                                         forEvent:nil];
}
1
ixi