Question

J'ai des difficultés à saisir du texte dans un UITextField sous un SVProgressionHUD (Fondamentalement, un UIView avec une UIWindow transparente en plein écran et quelques sous-vues UIView affichant du texte et une barre de progression personnalisée).

Mon problème est que UITextField affiche le curseur clignotant et le clavier s'affiche, mais lorsque j'appuie sur une touche, rien n'est saisi dans le champ de texte.Je vois seulement que le clignotement du curseur s'interrompt comme d'habitude.Chose intéressante, la touche retour (supprimer) fonctionne (elle supprime en réalité la dernière lettre de UITextView), mais pas n'importe quelle autre touche.

J'utilise iOS 6.

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

MODIFIER:Le même UITextField fonctionne correctement lorsqu'aucun SVProgressHUD n'est affiché.Cela me fait penser que cela a quelque chose à voir avec le premier intervenant, mais j'ai déjà essayé d'appeler resignFirstResponder sur chaque fenêtre et sous-vue du SVProgressHUD et cela ne fonctionne toujours pas.

Était-ce utile?

La solution

J'ai finalement trouvé le problème:Appels SVProgressHUD makeKeyAndVisible lorsqu'il est initialisé, car il souhaite recevoir des notifications clavier pour le repositionnement.J'ai recherché ce qu'est réellement la « fenêtre clé » et j'ai découvert :

...La fenêtre clé répond aux entrées de l'utilisateur...

Maintenant, comme l'UIWindow du SVProgressHUD était la keyWindow, mon autre fenêtre, qui contenait le UITextField, n'a pas reçu la saisie de l'utilisateur.

J'appelle enfin makeKeyWindow sur la fenêtre d'AppDelegate et tout fonctionne bien.

J'espère que cela aidera toute personne ayant des problèmes similaires.

Autres conseils

Appel resignFirstResponder() pour fermer le clavier avant d'afficher SVProgressHUD.

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

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

...pour filtrer les caractères indésirables ?Si c'est le cas, c'est peut-être un peu trop de zèle avec le filtrage ?

Pour moi, cela a fonctionné.

J'ai apporté des modifications à ma méthode de délégation de champ de texte, puis 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 texte
  2. Assurez-vous que l'interaction utilisateur du champ de texte est activée. Et

  3. Enfin, veuillez vérifier votre méthode de délégation de champ de texte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top