J'essaie d'utiliser un clavier personnalisé dans mon application, mais je rencontre des problèmes en essayant de le restreindre à un UITextField particulier. J'ai basé mon code sur this Xcode project (initialement trouvé sur this blog). Ce code ajoute un UIButton personnalisé (représentant un «point décimal») dans la vue du clavier UIKeyboardTypeNumberPad. Il le fait en s'abonnant à UIKeyboardWillShowNotification et en modifiant le clavier quand il apparaît. Ce projet Xcode fonctionne très bien, mais lorsque j'ajoute un UITextField supplémentaire, la touche personnalisée est également placée dans le clavier pour ce champ de texte, même si j'ai sélectionné un type de clavier complètement différent pour ce champ de texte.Comment savoir ce que UITextField a causé une UIKeyboardWillShowNotification?
Je tenté d'enregistrer seulement voir les notifications UIKeyboardWillShowNotification de celui particulier UITextField, mais cela ne semble pas fonctionner:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:exampleViewController.textField];
J'ai essayé aussi d'inspecter l'objet à l'intérieur du NSNotification passé à keyboardWillShow, mais malheureusement, il se réfère au clavier, pas le contrôle de l'interface utilisateur qui a causé l'apparition du clavier.
2009-10-21 19:50:22.205 Example[6302:207] NSConcreteNotification 0x321ebd0 {name = UIKeyboardWillShowNotification; userInfo = {
UIKeyboardAnimationCurveUserInfoKey = 0;
UIKeyboardAnimationDurationUserInfoKey = 0.300000011920929;
UIKeyboardBoundsUserInfoKey = NSRect: {{0, 0}, {320, 216}};
UIKeyboardCenterBeginUserInfoKey = NSPoint: {160, 588};
UIKeyboardCenterEndUserInfoKey = NSPoint: {160, 372};
}}
Est-ce que je comprends mal l'interface addObserver? Sûrement il doit y avoir un moyen de s'abonner aux notifications d'un contrôle d'interface utilisateur particulier?
Quelqu'un at-il d'autres suggestions sur la façon d'y parvenir?
I spécifiquement mis l'autre UITextField à utiliser différents types de clavier. Malheureusement, le code «clavier personnalisé» modifie tout clavier qui apparaît, et je ne peux pas comprendre comment distinguer quel UITextField a provoqué la notification UIKeyboardWillShowNotification. J'ai mis à jour le post pour clarifier un peu plus. –