Compartilhar via


Trabalhando com entrada de texto watchOS no Xamarin

O Apple Watch não fornece um teclado para os usuários inserirem texto, no entanto, ele dá suporte a algumas alternativas watch amigáveis:

  • Selecionando em uma lista predefinida de opções de texto,
  • Ditado siri,
  • Escolhendo um emoji,
  • Rabisque o reconhecimento de manuscrito letra por letra (introduzido no watchOS 3).

Atualmente, o simulador não dá suporte ao ditado, mas você ainda pode testar as outras opções do controlador de entrada de texto, como Rabisco, conforme mostrado aqui:

Testando a opção de rabisco

Para aceitar a entrada de texto em um aplicativo watch:

  1. Crie uma matriz de cadeia de caracteres de opções predefinidas.
  2. Chame PresentTextInputController com a matriz, se deseja permitir emoji ou não, e um Action que é chamado quando o usuário é concluído.
  3. Na ação de conclusão, teste o resultado da entrada e execute a ação apropriada no aplicativo (possivelmente definindo o valor de texto de um rótulo).

O snippet de código a seguir apresenta três opções predefinidas para o usuário:

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

A WKTextInputMode enumeração tem três valores:

  • Sem formatação
  • AllowEmoji
  • AllowAnimatedEmoji

Sem formatação

Quando o modo simples é definido, o usuário pode escolher:

  • Ditado
  • Rabisco ou
  • de uma lista predefinida fornecida pelo aplicativo.

Ditado, rabisco ou de uma lista predefinida que o aplicativo fornece

O resultado sempre é retornado como um NSObject que pode ser convertido em um string.

Emoji

Há dois tipos de emoji:

  • Emoji unicode regular
  • Imagens animadas

Quando o usuário escolhe um emoji Unicode, ele é retornado como uma cadeia de caracteres.

Se um emoji de imagem animada for selecionado, result o no manipulador de conclusão conterá um NSData objeto que contém o emoji UIImage.

Aceitando somente ditado

Para levar o usuário diretamente para a tela de ditado sem mostrar nenhuma sugestão (ou a opção Rabisco):

  • passar uma matriz vazia para a lista de sugestões e
  • defina 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 o usuário está falando, a tela watch exibe a tela a seguir, que inclui o texto conforme ele é compreendido (por exemplo, "Este é um teste"):

Quando o usuário está falando, a tela watch exibe o texto conforme ele é compreendido

Depois de pressionar o botão Concluído , o texto será retornado.