Trabajar con la entrada de texto de watchOS en Xamarin
Apple Watch no proporciona un teclado para que los usuarios escriban texto, pero admite algunas alternativas compatible con el reloj:
- Seleccionar una lista predefinida de opciones de texto
- Dictado de Siri
- Elegir un emoji
- Reconocimiento de escritura a mano letra por letra (introducido en watchOS 3).
El simulador no admite actualmente el dictado, pero puede igualmente probar las demás opciones del controlador de entrada de texto, como dibujo directo, como se muestra aquí:
Para aceptar la entrada de texto en una aplicación del reloj:
- Cree una matriz de cadenas de opciones predefinidas.
- Llame a
PresentTextInputController
con la matriz, tanto si quiere permitir emojis como si no y un objetoAction
al que se llama cuando finaliza el usuario. - En la acción de finalización, pruebe el resultado de entrada y realice las acciones adecuadas en la aplicación (posiblemente estableciendo el valor de texto de una etiqueta).
El siguiente fragmento de código presenta tres opciones predefinidas para el usuario:
var suggest = new string[] {"Get groceries", "Buy gas", "Post letter"};
PresentTextInputController (suggest, WatchKit.WKTextInputMode.AllowEmoji, (result) => {
// action when the "text input" is complete
if (result != null && result.Count > 0) {
// this only works if result is a text response (Plain or AllowEmoji)
enteredText = result.GetItem<NSObject>(0).ToString();
Console.WriteLine (enteredText);
// do something, such as myLabel.SetText(enteredText);
}
});
La enumeración WKTextInputMode
tiene tres valores:
- Normal
- AllowEmoji
- AllowAnimatedEmoji
Normal
Cuando se establece el modo sin formato, el usuario puede elegir:
- Dictado
- Dibujo directo
- Escoger de una lista predefinida que proporciona la aplicación.
El resultado siempre se devuelve como NSObject
que se puede convertir en string
.
Emoji
Hay dos tipos de emoji:
- Emoji Unicode normal
- Imágenes animadas
Cuando el usuario elige un emoji Unicode, se devuelve como una cadena.
Si se selecciona un emoji de imagen animada, el result
en el controlador de finalización contendrá un objeto NSData
que contiene el emoji UIImage
.
Aceptar solo dictado
Para llevar al usuario directamente a la pantalla de dictado sin mostrar sugerencias (o la opción de dibujo directo):
- pase una matriz vacía para la lista de sugerencias y
- establezca
WatchKit.WKTextInputMode.Plain
.
PresentTextInputController (new string[0], WatchKit.WKTextInputMode.Plain, (result) => {
// action when the "text input" is complete
if (result != null && result.Count > 0) {
dictatedText = result.GetItem<NSObject>(0).ToString();
Console.WriteLine (dictatedText);
// do something, such as myLabel.SetText(dictatedText);
}
});
Cuando el usuario habla, la pantalla del reloj muestra la siguiente pantalla que incluye el texto tal como se entiende (por ejemplo, "Esta es una prueba"):
Una vez que el usuario presione el botón Listo, se devolverá el texto.