7 votes

Pourquoi les méthodes de saisie de texte omettent-elles généralement une fonction d'annulation ?

Je suis en train de lire la documentation sur les ressources de mon clavier (j'utilise la fonction MessagEase normalement), et je vois qu'ils déclarent :

MessagEase Screenshot

Veuillez noter que l'Android ne fournit aucune Annuler .

Cependant, je sais que ce n'est pas vrai - du moins, pas de manière apparente - parce que lorsque l'on utilise une clavier physique Ctrl + Z invoque undo fonctionne très bien et ne nécessite aucune application supplémentaire/externe, c'est-à-dire qu'il fonctionne nativement via le PNP générique (j'ai utilisé les variétés telnet, BT et RF, qui fonctionnent toutes). Et pourtant, de façon assez mystérieuse, la fonction semble être omise intentionnellement (avertissement : je n'ai aucune preuve à l'appui de cette conjecture).

En fait, MessagEase dispose de fonctionnalités de saisie étendues qui incluent des contrôles de champs de formulaire et des contrôles de caractères ASCII, et pourtant la saisie Ctrl + Z donne lieu à un notdef sortie de glyphes dans le même champ de formulaire.

Pourquoi en est-il ainsi ?

EDIT : Veuillez noter que je fais référence à la connexion d'un clavier physique à un appareil Android, je suis pas en comparant l'UX de PC et d'Android.

0 votes

Il est possible de l'implémenter avec l'interface TextWatcher

6voto

Irfan Latif Points 16863

Cette question peut obtenir de meilleures réponses de la part des développeurs que de la communauté des utilisateurs finaux.

Le framework Android dispose d'une classe nommée UndoManager "pour gérer et interagir avec l'état global d'annulation d'un document ou d'une application. Cette classe supporte à la fois l'annulation et le rétablissement..." . Et l'Android EditText (qui étend la vue TextView et est couramment utilisé dans les applications pour obtenir une saisie de texte de la part de l'utilisateur) supporte Annuler y Refaire opérations depuis Android 6 au moins. En fait, un développeur de ROM peut afficher ces options dans le menu contextuel de la touche longue pour chaque application, comme nous le voyons. Copie , Pâte y Sélectionner tout qui sont affichés par défaut . Mais Undo / Redo fonctionnent toujours si le clavier virtuel ou physique peut envoyer CTRL-Z y CTRL-SHIFT-Z événements clés.

I étendu CTRL- support des événements dans AnySoftKeyboard pour les applications non terminales. Tout le monde peut donc le faire. La raison pour laquelle ils ne le font pas est purement une question de choix. Il n'y a pas de limitation technique.

0 votes

Notez que le UndoManager à partir d'Android 12 est restreint, par : developer.Android.com/about/versions/12/non-sdk-12#new-blocked Également basé sur : Android.googlesource.com/platform/development/+log/refs/heads/ cela ressemble à une fonctionnalité à l'étude et mise en pause/supprimée/cachée et que les développeurs devaient utiliser TextWatcher pour éventuellement mettre en place leurs propres opérations d'annulation/rétablissement.

0 votes

@MorrisonChang Les API cachées sont cachées aux applications, pas au framework. Ainsi, les restrictions non-SDK ne s'appliquent pas aux API cachées. EditText / TextView . Depuis la dernière version, les opérations d'annulation et de rétablissement sont entièrement gérées par ces classes : Android.googlesource.com/platform/frameworks/base/+/ . Mais même si Google abandonne le support (ce qui ne semble pas être le cas jusqu'à présent), l'extension de l'accès à l'Internet est une bonne chose. EditText pour gérer les événements clés et conserver l'historique ne sera pas une tâche difficile.

0 votes

Je ne suis pas sûr de savoir à quels "développeurs" vous faites référence dans votre première ligne par rapport à votre dernière ligne, "développeurs du framework Android" ou "développeurs tiers". Je pense que ce que je voulais dire, c'est que la fonctionnalité "défaire/refaire" de l'application TextView n'est pas clairement définie dans la documentation officielle et n'est que suggérée par la propriété XML Android:allowUndo . Le fait qu'un développeur d'applications tierces doive examiner la source du cadre n'est pas nouveau, mais c'est moins une "question de choix" qu'une "prise de conscience".

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X