Работа с текстовыми входными данными watchOS в Xamarin
Apple Watch не предоставляет клавиатуру для пользователей для ввода текста, однако она поддерживает некоторые часы альтернативы:
- Выбор из предварительно определенного списка параметров текста
- Диктовка Siri,
- Выбор эмодзи,
- Распознавание рукописного ввода букв (представлено в watchOS 3).
Симулятор в настоящее время не поддерживает диктовку, но вы по-прежнему можете протестировать другие параметры контроллера ввода текста, например Scribble, как показано здесь:
Чтобы принять текстовые входные данные в приложении наблюдения, выполните приведенные действия.
- Создайте строковый массив предопределенных параметров.
- Вызов
PresentTextInputController
массива, разрешающий эмодзи или нет, иAction
вызывается, когда пользователь завершит работу. - В действии завершения проверьте входной результат и выполните соответствующее действие в приложении (возможно, задав текстовое значение метки).
В следующем фрагменте кода представлены три предварительно определенных параметра для пользователя:
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);
}
});
Перечисление WKTextInputMode
имеет три значения:
- Обычный
- AllowEmoji
- AllowAnimatedEmoji
Обычный
Если задан обычный режим, пользователь может выбрать следующее:
- Диктовки
- Scribble или
- из предварительно определенного списка, который предоставляет приложение.
Результат всегда возвращается как NSObject
результат, который может быть приведение к объекту string
.
Эмодзи
Существует два типа эмодзи:
- Обычный эмодзи Юникода
- Анимированные изображения
Когда пользователь выбирает эмодзи Юникода, он возвращается в виде строки.
Если эмодзи анимированного изображения выбран result
в обработчике завершения, будет содержать NSData
объект, содержащий эмодзи UIImage
.
Принятие только диктовки
Чтобы перейти пользователя непосредственно на экран диктовки без отображения каких-либо предложений (или параметра Scribble):
- передайте пустой массив для списка предложений и
- set
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);
}
});
Когда пользователь говорит, на экране просмотра отображается следующий экран, который включает текст, как он понимается (например, "Это тест"):
После нажатия кнопки "Готово " будет возвращен текст.