2010-11-11 6 views
0

J'ai un UIViewController qui a deux champs de texte, inputA et inputB. inputA fonctionne comme un champ de texte normal, cliquez dessus et le clavier apparaît et vous pouvez taper. Mais inputB déclenche une autre vue (pensez-y comme un bouton). Cette deuxième vue, MyView, a une vue popup personnalisée qui est animée pour apparaître avec le clavier. MyView 's est d'abord avec l'alpha à 0 et j'ai réglé les notifications pour quand le clavier affiche pour avoir l'alpha de la fenêtre contextuelle pour être mis à 1.iPhone - UIView présenté avec clavier - fonctionne, mais avec bug

Cela fonctionne très bien, mais j'ai un "bug" où lorsque le clavier est en cours d'affichage parce que l'utilisateur a tapé inputA d'abord, puis ils tapent inputB, il tire le MyView mais parce que le clavier montre déjà la notification n'est pas envoyé pour changer le popup alpha à 1.

Donc la question : quelle est la manière propre de contourner ce problème? Je veux que la vue apparaisse avec le clavier, mais si elle est déjà là, elle devrait juste être envoyée.

Existe-t-il un moyen de tester si le clavier est déjà affiché? Je veux faire ceci sans définir de valeur booléenne chaque fois que le clavier est affiché/masqué dans ces deux vues.

Répondre

0

essayer les suivantes

si ([entréeA isFirstResponder] || [entréeB isFirstResponder]) {

// clavier est affiché

} else {

// clavier n'est pas affiché

}

+0

Le problème est que le chèque doit être h appen dans une vue différente, donc inputA et inputB ne sont plus des variables locales à vérifier. Mais je suppose que je pourrais le faire avec mon autre point de vue. Faites une minuterie pour voir si c'est le premier répondeur (ce qui sera toujours le cas depuis le LoadView), puis lancez la fonction pour l'afficher. Je souhaite juste qu'il y avait un moyen plus propre. – RyanJM

+0

passez l'objet parent à votre nouvelle vue. Ensuite, vous pouvez accéder aux éléments de la classe parente sans aucun problème. –

Questions connexes