Je dois donner à l'utilisateur un moyen d'entrer (au plus) trois champs. Par exemple, pour une liste d'ingrédients pour une recette de cuisine, chaque entrée a une quantité, une unité et une étiquette, par ex. 2 gros oeuf (s), 1 pincée de sel, 50 ml de lait, etc. Comme vous pouvez le voir, certains champs sont obligatoires tandis que d'autres sont conditionnels.
Mon idée était d'utiliser soit une zone de texte ou un stepper numérique pour le montant, et la saisie semi-automatique pour l'unité et l'étiquette.
D'une part, je voudrais garder les types de contrôles d'entrée homogènes (autant que possible), mais d'autre part, dans le cas d'unités qui sont un petit ensemble, l'utilisation du contrôle de saisie semi-automatique semble être une exagération.
Quelles solutions existe-t-il?
Une autre façon de penser à ce problème est peut-être de savoir comment obtenir le plus d'informations de l'utilisateur à partir de sa première entrée, et l'utiliser pour lui permettre de terminer plus facilement le reste de l'entrée.
Avec cette approche à l'esprit, je mettrais le type d'ingrédient d'abord, comme champ de saisie semi-automatique, puis restreindre dynamiquement la liste déroulante des unités en fonction de l'ingrédient sélectionné. Par conséquent, l'utilisateur entre les informations dans un ordre logique (article, montant, unité) et les options qui leur sont proposées changent dynamiquement avant d'ouvrir la liste déroulante.
Prenons vos exemples. La première colonne est une saisie semi-automatique, la seconde un champ de saisie simple et la troisième montre les options possibles pour une liste déroulante restreinte dynamiquement.
Item Value Unit
------------------------------
Milk 50 [ml]
[cups]
[teaspoons]
Eggs 2 [disabled]
Salt 1 [g]
[teaspoon]
[pinch]
------------------------------
Pour un élément pour lequel vous n'avez pas prédéfini une liste d'unités restreinte (par exemple myrhh), vous pouvez simplement afficher la liste complète et permettre à l'utilisateur de choisir. Espérons que ce serait un cas Edge.
Je ne prendrais pas la peine de faire de la liste déroulante de l'unité une saisie semi-automatique, sauf si le nombre d'éléments est extrêmement élevé. Le champ d'élément mérite cependant une saisie semi-automatique, car il est susceptible d'être volumineux.
À l'avenir, j'inspecterais la base de données pour identifier les éléments les plus fréquemment enregistrés qui n'ont pas de liste d'éléments restreints codés en dur, et l'utiliser pour améliorer votre application dans les versions ultérieures.
Si vous vous sentez aventureux, essayez d'analyser le texte, en montrant un exemple à côté de la saisie de texte. De cette façon, cela ne ralentirait pas la frappe.
Mais techniquement, ce sera un défi: vous devrez autoriser plusieurs alias (l = litre = litre), et afficher des erreurs ("3 lait") ou des avertissements ("4 l mlik").
Une autre possibilité serait de choisir des ingrédients par photo. Cela prendrait certainement plus de temps que de le taper, mais cela peut être plus amusant (si le design est agréable, etc.).