Question

Tous les exemples que je peux trouver de mettre en place une notification ressembler à ceci:

[nc addObserver: sélecteur auto: @selector (keyboardWillShow :) Nom: objet UIKeyboardWillShowNotification: nil];

où l'objet est toujours d'être mis à zéro. l'objet est la notificationSender, qui est défini dans la documentation thusly:

"L'objet dont les notifications l'observateur veut recevoir,. Qui est, seules les notifications envoyées par cet expéditeur sont remis à l'observateur Quand nul, le centre de notification n'utilise pas l'expéditeur d'une notification de décider de le livrer à la observateur. "

Je souhaite recevoir la notification du clavier pour une seule vue de texte particulier, je veux dire addObserver, mais je ne sais pas quoi donner à l'objet. J'ai essayé la variable de sortie qui est lié à la vue du texte que je suis intéressé, mais qui viennent d'aboutir à mon obtenir aucune notification du tout.

Toutes les suggestions?

Était-ce utile?

La solution

Le UIKeyboardWillShowNotification vient de votre instance de fenêtre, et pour toutes fins utiles est une notification « système ». Le clavier est soit affiché ou ne pas montrer, ce n'est pas vraiment quelque chose qui est lié à un contrôle spécifique.

Si vous voulez faire quelque chose lorsqu'un utilisateur entre un champ de texte spécifique, vous devriez probablement contrôler que le délégué du champ de texte à la place.

Autres conseils

Dans ce cas, vous ne pouvez pas obtenir la notification que pour une vue de texte particulier, comme le docu pour UIKeyboardWillShowNotification dit: « L'objet de notification est nul. ».

Vous devez vérifier dans votre impl keyboardWillShow si votre isFirstResponder particulier vue texte.

J'avais deux besoins concurrents - je devais utiliser la notification du clavier parce que je avais besoin pour obtenir la hauteur du clavier, qui semble être uniquement disponible de cette façon, mais j'ai aussi besoin de savoir quel point de vue du texte que je me trouvais, ce qui signifiait aussi en utilisant le délégué textViewDidBeginEditing. Après beaucoup de déconner j'ai finalement eu recours pour obtenir la hauteur du clavier dans la méthode de notification et de le stocker dans une variable d'instance, qui était alors disponible à utiliser dans la méthode de délégué (je dois faire défiler la vue vers le haut, la vue de texte en bas ne sont pas la plupart du temps caché sous leur clavier quand ils commencent à taper). Un peu inélégante, mais cela fonctionne.

Merci pour les pointeurs!

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