Uso dell'input di testo watchOS in Xamarin
Apple Watch non fornisce una tastiera per consentire agli utenti di inserire testo, ma supporta alcune alternative di controllo:
- Selezione da un elenco predefinito di opzioni di testo,
- Dettatura siri,
- Scelta di un'emoji,
- Riconoscimento della grafia lettera per lettera (introdotto in watchOS 3).
Il simulatore attualmente non supporta la dettatura, ma è comunque possibile testare le altre opzioni del controller di input di testo, ad esempio Scribble, come illustrato di seguito:
Per accettare l'input di testo in un'app watch:
- Creare una matrice di stringhe di opzioni predefinite.
- Chiamare
PresentTextInputController
con la matrice, se consentire o meno l'emoji e un oggettoAction
che viene chiamato al termine dell'utente. - Nell'azione di completamento testare il risultato di input e intraprendere l'azione appropriata nell'app (eventualmente impostando il valore di testo di un'etichetta).
Il frammento di codice seguente presenta tre opzioni predefinite all'utente:
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);
}
});
L'enumerazione WKTextInputMode
ha tre valori:
- Pianura
- AllowEmoji
- AllowAnimatedEmoji
Pianura
Quando la modalità normale è impostata, l'utente può scegliere:
- Dettatura
- Scribble, o
- da un elenco predefinito fornito dall'applicazione.
Il risultato viene sempre restituito come oggetto NSObject
di cui è possibile eseguire il cast a un oggetto string
.
Emoji
Esistono due tipi di emoji:
- Emoji Unicode normale
- Immagini animate
Quando l'utente sceglie un'emoji Unicode, viene restituita come stringa.
Se un'emoji di immagine animata è selezionata nel result
gestore di completamento conterrà un NSData
oggetto che contiene l'emoji UIImage
.
Accettazione solo dettatura
Per portare l'utente direttamente alla schermata di dettatura senza visualizzare suggerimenti (o l'opzione Scribble):
- passare una matrice vuota per l'elenco di suggerimenti e
- impostare
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);
}
});
Quando l'utente parla, nella schermata di controllo viene visualizzata la schermata seguente che include il testo compreso (ad esempio "Questo è un test"):
Dopo aver premuto il pulsante Fine , verrà restituito il testo.