Код: Выделить всё
public override bool DispatchKeyEvent(KeyEvent e)
{
if (e.Characters != null)
{
var value = e.Characters;
WeakReferenceMessenger.Default.Send(new BarcodeScannedMessage(value));
}
return base.DispatchKeyEvent(e);
}
Однако проблема начинается отсюда. Когда пользователь открывает Чтобы запустить приложение, им нужно нажать кнопку, чтобы перейти к другому представлению, и выбрать вариант из средства выбора, чтобы отсканированный штрих-код был правильно сохранен. Когда я нажимаю кнопку «Назад», чтобы вернуться к основному представлению для сканирования штрих-кодов после средства выбора, у него никогда не будет Keycode.Unknown и KeyAction.Action_Multiple (скорее он получает KeyAction.Action_Down и KeyAction.Action_UP). KeyAction.Characters всегда будет иметь значение null.
Единственный способ исправить это - чтобы пользователь либо перетащил вниз строку состояния (ящик для Android, где вы можете выбрать Wi-Fi, данные, яркость и т. д.), либо мне пришлось нажать кнопку обзора и после этого вернуться в приложение.
Еще одна вещь, которую я уже пробовал, — это создать тестовую запись в главном представлении и настроить ее на Appearing(), а затем на сканирование.
Он заполняет запись содержимым штрих-кода, но KeyEvent — нет. получение удара.
Обновление: похоже, что фокусировка на записи заполнит текст, но он никогда не вызовет KeyEventAction.Multiple, в результате чего приведенный выше код никогда не сработает. Но когда я завершаю ввод, нажимая кнопку возврата, когда вход находится в фокусе, он снова начнет выдавать KeyEventAction.Multiple, и программа сможет снова получить штрих-код. Кажется, проблема не в фокусе, а в том, будут ли определенные объекты завершены?
Подробнее здесь: https://stackoverflow.com/questions/790 ... n-entry-fr