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:

Testing the scribble option

Per accettare l'input di testo in un'app watch:

  1. Creare una matrice di stringhe di opzioni predefinite.
  2. Chiamare PresentTextInputController con la matrice, se consentire o meno l'emoji e un oggetto Action che viene chiamato al termine dell'utente.
  3. 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.

Dictation, Scribble, or from a pre-defined list that the app supplies

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"):

When the user is speaking, the watch screen displays the text as it is understood

Dopo aver premuto il pulsante Fine , verrà restituito il testo.