Arbeiten mit watchOS-Texteingaben in Xamarin

Die Apple Watch bietet keine Tastatur für Benutzer zum Eingeben von Text, unterstützt jedoch einige watch-freundliche Alternativen:

  • Auswählen aus einer vordefinierten Liste von Textoptionen,
  • Siri-Diktieren,
  • Auswählen eines Emojis,
  • Buchstaben-für-Buchstaben-Handschrifterkennung (eingeführt in watchOS 3)

Der Simulator unterstützt derzeit kein Diktieren, aber Sie können weiterhin die anderen Optionen des Texteingabecontrollers testen, z. B. Scribble, wie hier gezeigt:

Testen der Scribble-Option

So akzeptieren Sie Texteingaben in einer watch-App:

  1. Erstellen Sie ein Zeichenfolgenarray mit vordefinierten Optionen.
  2. Rufen Sie PresentTextInputController mit dem Array auf, unabhängig davon, ob Emoji zugelassen werden soll oder nicht, und ein Action , das aufgerufen wird, wenn der Benutzer fertig ist.
  3. Testen Sie in der Vervollständigungsaktion das Eingabeergebnis, und führen Sie die entsprechende Aktion in der App aus (möglicherweise den Textwert einer Bezeichnung festlegen).

Der folgende Codeausschnitt zeigt dem Benutzer drei vordefinierte Optionen an:

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

Die WKTextInputMode Enumeration weist drei Werte auf:

  • Plain
  • AllowEmoji
  • AllowAnimatedEmoji

Plain

Wenn der einfache Modus festgelegt ist, kann der Benutzer Folgendes auswählen:

  • Diktat
  • Scribble oder
  • aus einer vordefinierten Liste, die von der Anwendung bereitgestellt wird.

Diktieren, Scribble oder aus einer vordefinierten Liste, die von der App bereitgestellt wird

Das Ergebnis wird immer als NSObject zurückgegeben, das in eine stringumgewandelt werden kann.

Emoji

Es gibt zwei Arten von Emojis:

  • Reguläre Unicode-Emojis
  • Animierte Bilder

Wenn der Benutzer ein Unicode-Emoji auswähelt, wird es als Zeichenfolge zurückgegeben.

Wenn ein animiertes Bild-Emoji ausgewählt ist, enthält das result im Vervollständigungshandler ein NSData Objekt, das das Emoji UIImageenthält.

Nur Diktat akzeptieren

So führen Sie den Benutzer direkt zum Diktierbildschirm, ohne Vorschläge anzuzeigen (oder die Scribble-Option):

  • übergeben Sie ein leeres Array für die Vorschlagsliste, und
  • legen Sie fest 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);
    }
});

Wenn der Benutzer spricht, zeigt der watch-Bildschirm den folgenden Bildschirm an, der den Text so enthält, wie er verstanden wird (z. B. "Dies ist ein Test"):

Wenn der Benutzer spricht, zeigt der Watch-Bildschirm den Text so an, wie er verstanden wird.

Sobald die Schaltfläche Fertig geklickt wird, wird der Text zurückgegeben.