Praca z wprowadzaniem tekstu w systemie watchOS na platformie Xamarin
Zegarek Apple Watch nie zapewnia klawiatury dla użytkowników do wprowadzania tekstu, jednak obsługuje niektóre przyjazne dla zegarka alternatywy:
- Wybieranie ze wstępnie zdefiniowanej listy opcji tekstowych,
- Dyktowanie Siri,
- Wybieranie emoji,
- Rozpoznawanie pisma ręcznego scribble na literę (wprowadzone w systemie watchOS 3).
Symulator nie obsługuje obecnie dyktowania, ale nadal można przetestować inne opcje kontrolera wprowadzania tekstu, takie jak Scribble, jak pokazano poniżej:
Aby zaakceptować wprowadzanie tekstu w aplikacji zegarka:
- Utwórz tablicę ciągów wstępnie zdefiniowanych opcji.
- Wywołaj
PresentTextInputController
metodę za pomocą tablicy, czy zezwolić na emoji, czy nie, i wywołaj metodęAction
po zakończeniu pracy użytkownika. - W akcji ukończenia przetestuj wynik wejściowy i podejmij odpowiednie działania w aplikacji (być może ustawienie wartości tekstowej etykiety).
Poniższy fragment kodu przedstawia użytkownikowi trzy wstępnie zdefiniowane opcje:
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);
}
});
Wyliczenie WKTextInputMode
ma trzy wartości:
- Zwykły
- AllowEmoji
- AllowAnimatedEmoji
Zwykły
Po ustawieniu trybu zwykłego użytkownik może wybrać:
- Dyktowania
- Scribble lub
- ze wstępnie zdefiniowanej listy, którą dostarcza aplikacja.
Wynik jest zawsze zwracany jako element NSObject
, który można rzutować do elementu string
.
Emoji
Istnieją dwa typy emoji:
- Zwykłe emoji Unicode
- Animacjami
Gdy użytkownik wybierze emoji Unicode, zostanie zwrócony jako ciąg.
Jeśli w procedurze obsługi uzupełniania zostanie wybrany result
animowany obraz emoji, będzie zawierać NSData
obiekt zawierający emoji UIImage
.
Akceptowanie tylko dyktowania
Aby przełączyć użytkownika bezpośrednio na ekran dyktowania bez wyświetlania żadnych sugestii (lub opcji Scribble):
- przekaż pustą tablicę dla listy sugestii i
- ustaw wartość
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);
}
});
Gdy użytkownik mówi, na ekranie zegarka jest wyświetlany następujący ekran, który zawiera tekst zrozumiały (na przykład "To jest test"):
Po naciśnięciu przycisku Gotowe tekst zostanie zwrócony.