Mon application utilise un UIAccessoryView
pour fournir des fonctionnalités de clavier supplémentaires (telles que les tabulations avant/arrière et les touches fléchées) pour le clavier virtuel, mais cela provoque le déclenchement de UIKeyboardDidShowNotification même lorsqu'un clavier physique est présent (l'accessoire apparaît au bas de l'écran).
J'aimerais vérifier si un clavier physique est attaché lors du traitement de la notification UIKeyboardWillShowNotification, afin d'empêcher la vue accessoire d'apparaître et d'empêcher ma vue personnalisée de défiler vers le haut (pour faire de la place au clavier virtuel inexistant).
J'ai essayé d'examiner le UIKeyboardFrameEndUserInfoKey
mais il renvoie une taille réelle pour le clavier virtuel, bien que rien ne soit affiché.
Existe-t-il un moyen de détecter la présence d'un clavier physique pour éviter ce comportement indésirable ?
Hmm, l'intrigue s'épaissit.
J'ai essayé de désactiver l'accessoire de saisie en renvoyant nil de la propriété inputAccessoryView de l'objet Responder qui déclenche le clavier. Cela supprime UIKeyboardWillShowNotification
y UIKeyboardDidShowNotification
lorsqu'un clavier physique est présent, mais conserve ces notifications en l'absence d'un tel clavier. Tout va bien jusqu'à présent.
Ensuite, j'ai essayé de réactiver inputAccessoryView seulement après que UIKeyboardWillShowNotification
a été reçu. Cela ne se produit que lorsqu'un clavier virtuel est nécessaire, ce qui devrait me permettre de réintroduire la vue accessoire dans ces circonstances. C'est du moins ce que je pensais.
Malheureusement, il semble que le système d'exploitation ne vérifie pas inputAccessoryView. après UIKeyboardWillShowNotification
Il n'affiche donc pas la vue accessoire lorsqu'elle est nécessaire :o(
Cela me laisse avec deux options :
- Inclure la vue des accessoires de saisie, ce qui donne une fonctionnalité supplémentaire aux utilisateurs de claviers virtuels, mais perdre la capacité de détecter un clavier physique et donc ne pas prendre en charge les dispositifs physiques ; ou
- Exclure complètement l'accessoire de saisie, empêchant la plupart des utilisateurs d'accéder aux touches supplémentaires, mais permettant à l'application de fonctionner avec un clavier physique.
Ce n'est pas un grand choix, donc je suis toujours désireux de voir si quelqu'un d'autre a abordé ce problème !