Работа с текстовыми входными данными watchOS в Xamarin

Apple Watch не предоставляет клавиатуру для пользователей для ввода текста, однако она поддерживает некоторые часы альтернативы:

  • Выбор из предварительно определенного списка параметров текста
  • Диктовка Siri,
  • Выбор эмодзи,
  • Распознавание рукописного ввода букв (представлено в watchOS 3).

Симулятор в настоящее время не поддерживает диктовку, но вы по-прежнему можете протестировать другие параметры контроллера ввода текста, например Scribble, как показано здесь:

Testing the scribble option

Чтобы принять текстовые входные данные в приложении наблюдения, выполните приведенные действия.

  1. Создайте строковый массив предопределенных параметров.
  2. Вызов PresentTextInputController массива, разрешающий эмодзи или нет, и Action вызывается, когда пользователь завершит работу.
  3. В действии завершения проверьте входной результат и выполните соответствующее действие в приложении (возможно, задав текстовое значение метки).

В следующем фрагменте кода представлены три предварительно определенных параметра для пользователя:

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 или
  • из предварительно определенного списка, который предоставляет приложение.

Dictation, Scribble, or from a pre-defined list that the app supplies

Результат всегда возвращается как 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);
    }
});

Когда пользователь говорит, на экране просмотра отображается следующий экран, который включает текст, как он понимается (например, "Это тест"):

When the user is speaking, the watch screen displays the text as it is understood

После нажатия кнопки "Готово " будет возвращен текст.