UITextField ne reçoit pas de saisie au keyboard

Je rencontre des problèmes lors de la saisie de text dans un UITextField sous SVProgressHUD (essentiellement un UIView avec une UIWindow transparente en plein écran et certaines sous-vues UIView affichant du text et une barre de progression personnalisée).

Mon problème est que l'UITextField affiche le slider clignotant et le keyboard montre, mais quand j'appuie sur une touche, rien n'est entré dans le champ de text. Je vois seulement que le clignotement du slider s'interrompt comme d'habitude. Chose intéressante, la touche de return (suppression) fonctionne (elle supprime vraiment la dernière lettre de l'UITextView), mais pas d'autre key.

J'utilise iOS 6.

Toute aide serait très appréciée.

EDIT: le même UITextField fonctionne correctement lorsqu'il n'y a aucun SVProgressHUD affiché. Cela me fait penser qu'il a quelque chose à voir avec le premier répondeur, mais j'ai déjà essayé d'appeler resignFirstResponder sur chaque window et sous-vue du SVProgressHUD et ça ne marche toujours pas.

J'ai finalement trouvé le problème: SVProgressHUD appelle makeKeyAndVisible quand il est initialisé, parce qu'il veut recevoir des notifications de keyboard pour le repositionnement. J'ai regardé ce que la "window principale" est réellement et j'ai découvert:

… La window key répond à l'input de l'user …

Maintenant, comme l'UIWindow du SVProgressHUD était la keyWindow, mon autre window, qui contenait le UITextField n'a pas reçu l'input de l'user.

J'appelle finalement makeKeyWindow sur la window de AppDelegate et tout fonctionne correctement.

J'espère que cela aide tous ceux qui ont des problèmes similaires.

ma solution: appel resignfirstresponder pour resignfirstresponder le keyboard avant de montrer SVProgressHUD .

Avez-vous mis en œuvre la méthode ….

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

… pour filterr les caractères indésirables? Si oui, peut-être que c'est un peu trop zélé avec le filtrage?

Pour moi c'est travaillé.

J'ai fait des changements dans ma méthode de délégué de champ de text alors cela a fonctionné.

 if ([textField isEqual:selectBankName]) { return No; } else if ([textField isEqual:enterAmountTextfield]) { return YES; } return NO; } 
  1. définir un délégué pour le champ de text
  2. Assurez-vous que l'option userInteraction de textfield est activée.Et

  3. Enfin, vérifiez votre méthode de délégué textfield.