Не буквенно-цифровые клавиши с пользовательским расширением клавиатуры?(Xamarin iOS) - PullRequest
0 голосов
/ 21 сентября 2019

Я создал собственное расширение клавиатуры для iOS в Xamarin.Мне нужно передать нажатия клавиш-модификаторов, таких как PageUp, Home, Insert, Escape и т. Д.

Почему вы можете спросить?У моей компании есть небольшой дисплей с 17-клавишной клавиатурой для смешивания биодизеля.Это работает под прикрытием Linux, и мы можем VNC в него.У нас есть сотни таких регистров на местах, и мы хотим, чтобы решение было обратно совместимым.Проблема заключается в том, что для многих видов навигации требуются клавиши-модификаторы.Это делает навигацию с помощью традиционной программной клавиатуры более трудной, чем она того стоит.Итак, вместо того, чтобы заново изобретать колесо, написав параллельный пользовательский интерфейс или пользовательское приложение VNC, я попробую пользовательское расширение клавиатуры.

У меня версия расширения клавиатуры для Android работает нормально.Android позволяет мне передавать в явном KeyCodes.Есть коды клавиш для всех клавиш на полноценной клавиатуре.Тем не менее, iOS использует базовую вставку жала под крышками;и нет никаких строковых представлений для ключей-модификаторов.

Вот моя рабочая клавиатура.(Я сделаю это позже.):

.

Мой ViewController наследуется от UIInputViewController.Вот фрагмент моего кода:

  public override void ViewDidLoad()
  {
   base.ViewDidLoad();

   UpButton.TouchUpInside += Button_TouchUpInside;
   LeftButton.TouchUpInside += Button_TouchUpInside;
   RightButton.TouchUpInside += Button_TouchUpInside;
   DownButton.TouchUpInside += Button_TouchUpInside;
   PrintButton.TouchUpInside += Button_TouchUpInside;
   ModeButton.TouchUpInside += Button_TouchUpInside;
   MenuButton.TouchUpInside += Button_TouchUpInside;
   PresetButton.TouchUpInside += Button_TouchUpInside;
   StartButton.TouchUpInside += Button_TouchUpInside;
   StopButton.TouchUpInside += Button_TouchUpInside;

   NextKeyboardButton.AddTarget(this, new Selector("advanceToNextInputMode"), UIControlEvent.TouchUpInside);
  }

  private void Button_TouchUpInside(object sender, EventArgs e)
  {
   if (sender == UpButton)
    TextDocumentProxy.InsertText("8");
   else if (sender == LeftButton)
    TextDocumentProxy.InsertText("4");
   else if (sender == RightButton)
    TextDocumentProxy.InsertText("6");
   else if (sender == DownButton)
    TextDocumentProxy.InsertText("2");
   else if (sender == PrintButton)
   {
    // Key.PageUp
   }
   else if (sender == ModeButton)
   {
    // Key.PageDown
   }
   else if (sender == MenuButton)
   {
    // Key.Home
   }
   else if (sender == PresetButton)
   {
    // Key.Insert
   }
   else if (sender == StartButton)
   {
    // Key.Enter
   }
   else if (sender == StopButton)
   {
    // Key.Escape
   }
  }

Есть ли другой способ взаимодействия с целью клавиатуры, кроме TextDocumentProxy.InsertText ()?Если не явный KeyCode, как насчет Unicode?

Спасибо всем!

...