Я создал собственное расширение клавиатуры для 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?
Спасибо всем!