Comment récupérer une entrée utilisateur personnalisée (ex : un nom de fichier, un message…) sur une Apple Watch qui, comme vous l’avez sans doute constaté, ne possède pas de clavier ?
En fait, une fois de plus, c’est quelque chose de très simple à réaliser en Swift.
L’application Apple Watch que je vous propose en démo est très basique : lorsque l’utilisateur appuie sur le bouton « Get input », une liste de phrases pré-définies lui est proposée. En cliquant sur le micro, on lui propose de prononcer sa propre phrase. Celle-ci est ensuite récupérée et affichée dans un label.
Voici l’appli terminée :
Allez, on plonge…
Avec XCode, on commence de manière traditionnelle en créant une application IOS / Swift, avec le template « iOS App with WatchKit App ».
Pour plus de détails sur cette étape et sur la création des vues, je vous invite à jeter un oeil ici : Tutoriel Swift : communication Apple Watch – iPhone.
Ensuite, les choses sérieuses commencent…
Le framework WatchKit supporte 3 types d’entrées utilisateur : la sélection depuis des phrases pré-définies, la dictée vocale et la sélection d’emoji.
Notre application Watchkit comprend un seul écran, avec 1 bouton et 1 label, voilà donc le code du contrôleur :
Le code le plus important pour cette appli se trouve dans l’action liée au bouton :
On crée une liste de phrases pré-définies, puis on sélectionne le mode d’entrée désiré. Les 3 modes possibles sont :
- WKTextInputMode.Plain : on permet à l’utilisateur de sélectionner une phrase pré-définie ou d’utiliser le mode dictée (symbolisé par un bouton « micro »). Il n’y a pas de bouton Emoji
- WKTextInputMode.AllowEmoji : c’est la mème chose que le mode précèdent, mais on ajoute en plus un bouton pour sélectionner un emoji non animé.
- WKTextInputMode.AllowAnimatedEmoji : idem que ci-dessus, mais avec des emoji animés.
On récupère ensuite le premier élément d’un tableau de résultats pour l’afficher. Attention, dans mon application, ne traite que des entrées de type « String ». Mais si vous voulez utiliser en plus la possibilité de récupérer des emoji, il faudra déterminer si l’on à affaire à un type « String » ou un type « NSData Object » avec un test de ce genre :