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:
Para aceitar a entrada de texto em um aplicativo watch:
- Crie uma matriz de cadeia de caracteres de opções predefinidas.
- Chame
PresentTextInputController
com a matriz, se deseja permitir emoji ou não, e umAction
que é chamado quando o usuário é concluído. - 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.
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"):
Depois de pressionar o botão Concluído , o texto será retornado.