41 votes

La boîte de dialogue modale n'abandonne pas le clavier

Je rencontre un problème où le clavier n'est pas ignoré lorsque vous laissez un UITextField ou UITextView dans un UIModalPresentationFormSheet . De plus, j'ai créé un gros bouton qui sert d'arrière-plan à la vue. Ainsi, si l'utilisateur appuie en dehors des champs, il se déclenche. J'utilise le même code dans un contrôleur de vue standard, et cela fonctionne comme prévu. Dans le contrôleur de vue modale, cela ne fait rien. Toute suggestion serait appréciée.

 - (BOOL)textFieldShouldReturn:(id)sender {  
 [titleTextField resignFirstResponder];
 return YES;
}

- (BOOL)textViewShouldReturn:(id)sender {  
 [synopsisTextView resignFirstResponder];
 return YES;
}

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

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

- (IBAction)backgroundClick:(id)sender {  
 [titleTextField resignFirstResponder];
 [synopsisTextView resignFirstResponder];
}
 

119voto

davsan Points 3920

Remplacer disablesAutomaticKeyboardDismissal pour retourner NON comme ci-dessous a résolu le même problème. Vous devez mettre ce code dans votre contrôleur de vue, à partir duquel vous lancez le clavier:

 - (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}
 

Vérifiez également cette question SO si vous souhaitez obtenir une explication détaillée.

51voto

ctrahey Points 12360

Pour ceux qui ont des problèmes avec UINavigationController , je pense qu'il existe une meilleure solution qu'une catégorie sur UIViewController . Nous devrions changer le comportement de UINavigationController pour demander à ses topViewController (à mon avis, c'est ainsi que tous les ViewController conteneurs devraient gérer cela).

 @implementation UINavigationController (DelegateAutomaticDismissKeyboard)
- (BOOL)disablesAutomaticKeyboardDismissal {
    return [self.topViewController disablesAutomaticKeyboardDismissal];
}
 

3voto

Kalle Points 6804

Si vous présentez une vue modale avec une "feuille de formulaire" de style présentation, Apple ne semble apparemment pas ignorer le clavier, pensant qu'elle ne veut pas que le clavier bascule à l'intérieur d'un environnement où l'utilisateur effectuera beaucoup de modifications (c'est-à-dire "formes"). La solution serait de changer de style de présentation ou de vivre avec.

0voto

azdev Points 5691

J'ai résolu ce problème en redimensionnant une fiche UIModalPresentationPageSheet. Voir ma réponse ici .

0voto

Mike Gledhill Points 2105

Les disablesAutomaticKeyboardDismissal refusé de travailler pour moi sur iOS 7.

Mais ... j'ai réussi à résoudre ce problème en désactivant simplement UITextFields à l'écran.

Ma solution est décrite ici .

Cette solution de contournement fonctionne même sur Modal UIViewController s.

Ouais ... ça m'a surpris aussi !!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X