Práce s textovým vstupem watchOS v Xamarinu

Apple Watch neposkytuje uživatelům klávesnici pro zadávání textu, ale podporuje některé alternativy vhodné pro kukátky:

  • Výběr z předem definovaného seznamu možností textu
  • Diktování Siri,
  • Výběr emoji
  • Rozpoznávání rukopisu psané písmenem (zavedené ve watchOS 3)

Simulátor v současné době nepodporuje diktování, ale i tak můžete otestovat další možnosti kontroleru textového vstupu, například Scribble, jak je znázorněno tady:

Testing the scribble option

Přijetí textového zadání v aplikaci kukátku:

  1. Vytvořte pole řetězců s předdefinovanými možnostmi.
  2. Volání PresentTextInputController s polem, ať už chcete povolit emoji nebo ne, a volejte volání Action po dokončení uživatele.
  3. V akci dokončení otestujte výsledek vstupu a proveďte v aplikaci odpovídající akci (pravděpodobně nastavíte textovou hodnotu popisku).

Následující fragment kódu představuje uživateli tři předdefinované možnosti:

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);
    }
});

Výčet WKTextInputMode má tři hodnoty:

  • Prostý
  • AllowEmoji
  • AllowAnimatedEmoji

Prostý

Když je nastavený prostý režim, uživatel může zvolit:

  • Diktování
  • Klikybíč nebo
  • z předem definovaného seznamu, který aplikace poskytuje.

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

Výsledek se vždy vrátí jako výsledek NSObject , který lze přetypovat na hodnotu string.

Emoji

Existují dva typy emoji:

  • Běžné emoji Unicode
  • Animované obrázky

Když uživatel zvolí emoji Unicode, vrátí se jako řetězec.

Pokud je vybrán result animovaný obrázek emoji v obslužné rutině dokončení bude obsahovat NSData objekt, který obsahuje emoji UIImage.

Přijetí pouze diktování

Pokud chcete uživatele převést přímo na obrazovku diktování, aniž by se vám zobrazovaly nějaké návrhy (nebo možnost Scribble):

  • předat prázdné pole pro seznam návrhů a
  • nastavit 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);
    }
});

Když uživatel mluví, obrazovka kukátku zobrazí následující obrazovku, která obsahuje text, jak je srozumitelný (například "Toto je test"):

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

Jakmile stisknou tlačítko Hotovo , vrátí se text.