Estoy leyendo la documentación de recursos de mi teclado (normalmente uso MessagEase ) y veo que dicen:
Tenga en cuenta que Android no proporciona Deshacer .
Sin embargo, sé que esto no es realmente cierto, al menos, no de manera aparente, porque cuando se usa un teclado físico Ctrl + Zse invoca undo
bien y no requiere ninguna aplicación adicional/externa, es decir, funciona de forma nativa a través de PNP genérico ( He usado variedades de telnet, BT y RF, todas las cuales funcionan). Y, sin embargo, misteriosamente, la función parece omitirse intencionalmente (descargo de responsabilidad: no tengo evidencia para respaldar esta conjetura).
De hecho, MessagEase tiene funcionalidades de entrada extendidas que incluyen controles de campo de formulario y controles de caracteres ASCII y, sin embargo, ingresar Ctrl+ Zda como resultado una notdef
salida de glifo exactamente en el mismo campo de formulario.
¿Por qué es este el caso?
EDITAR: tenga en cuenta que me refiero a conectar un teclado físico a un dispositivo Android, no estoy comparando PC vs Android UX.
Esta pregunta puede obtener mejores respuestas de los desarrolladores que de la comunidad de usuarios finales.
El marco de trabajo de Android tiene una clase llamada "para administrar e interactuar con el estado de deshacer global para un documento o aplicación. Esta clase admite tanto deshacer como rehacer..." . Y la vista de Android (que se extiende y se usa comúnmente en aplicaciones para obtener la entrada de texto del usuario) admite las operaciones Deshacer y Rehacer desde Android 6 al menos. De hecho, un desarrollador de ROM puede mostrar estas opciones en el menú contextual de pulsación prolongada para cada aplicación, como vemos Copiar , Pegar y Seleccionar todo , que se muestran de forma predeterminada . Pero Deshacer/Rehacer siempre funciona si el teclado virtual o físico puede enviar eventos clave.UndoManager
EditText
TextView
CTRL-Z
CTRL-SHIFT-Z
Extendí el CTRL-
soporte de eventos en AnySoftKeyboard para aplicaciones que no son terminales. Entonces cualquiera puede. Por qué no lo hacen es puramente una cuestión de elección. No hay limitación técnica.
UndoManager
clase a partir de Android 12 está restringida, según: developer.android.com/about/versions/12/non-sdk-12#new-blocked También basado en: android.googlesource.com/platform/development/+log /refs/heads/… parece una característica bajo consideración y pausada/caída/oculta y se esperaba que los desarrolladores usaran TextWatcher para quizás implementar sus propias operaciones de deshacer/rehacer.EditText
/ TextView
. A partir de la última confirmación, las operaciones de deshacer y rehacer se manejan por completo con estas clases de marco: android.googlesource.com/platform/frameworks/base/+/… . Pero incluso si Google elimina el soporte (que no parece ser el caso hasta ahora), extender EditText
la clase para manejar eventos clave y mantener el historial no será una gran tarea.TextView
no está claramente explicada en la documentación oficial y solo se insinúa en la propiedad XML android:allowUndo . El hecho de que un desarrollador de aplicaciones de terceros necesite mirar la fuente del marco no es nuevo, pero es menos 'una cuestión de elección' que 'conciencia'.TextView
no está claramente explicada en la documentación oficial" . Sí, ese es un punto válido. Y mi punto es que " Android no proporciona Deshacer " no suena como una excusa válida para no proporcionar una función tan pequeña. Es una cuestión de elección del desarrollador de la aplicación, aunque no tiene nada de malo.notdef
glifo.TextView
/ EditText
maneja los eventos Deshacer/Rehacer con seguridad; Proporcioné los enlaces al código fuente. "cuando se usa un teclado físico, Ctrl+Z invoca undo
muy bien" . Esto definitivamente significa que su teclado virtual no está enviando el evento de tecla correcto. Cómo enviar estos eventos: Di el enlace en el último párrafo. Simplemente puede instalar el teclado ASK y probarlo usted mismo: github.com/mirfatif/AnySoftKeyboard
loco7924