如何解决从Xamarin Entry外部的物理激光扫描仪捕获输入
我正在使用Xamarin.Forms(XAML + C#)为带有内置激光条形码扫描仪的PDA制作仓库库存的Android应用。
工作人员将条形码和换行符一起扫描到名为ProductBarcode
的条目中,以触发该条目中的 Completed 事件,因此可以通过事件处理程序,带有这样的代码。
private void ProductBarcode_Completed(object sender,EventArgs e)
{
if (!Product.IsValidBarcode(ProductBarcode.Text))
displayAlert("Error","Invalid Product Barcode.","Okay");
else /* Use of ProductBarcode (irrelevant) */;
}
工作正常。但是问题在于,工作人员经常触摸屏幕(视图背景),并且Entry失去焦点。因此,当他们尝试扫描下一个代码时,通常会按下物理扫描按钮(例如在EDA50K或类似设备中),并且输入内容不会读入条目中,并且会丢失。
我想知道是否有可能(或没有)捕获发送到ContentPage
后台的输入并将其发送到正确的Entry。甚至可以从屏幕上的任何地方捕获输入。
解决方法
我在寻找对 android 和 ios 扫描条形码的表单支持时遇到了这个问题。我以前的应用程序是原生 xamarin android 应用程序,我用它来普遍捕获扫描的输入:
public override void HandleDispatchKeyEvent(KeyEvent e) {
if (!string.IsNullOrWhiteSpace(e.Characters)) {
HandleInput(e.Characters);
}
else if (e.Action == KeyEventActions.Up) {
if (e.KeyCode == Keycode.Enter) {
HandleInput(_barcodeChacacters);
_barcodeChacacters = "";
}
else {
_barcodeChacacters += e.DisplayLabel;
}
}
}
那是我添加到基本视图中的隐藏片段的内部代码。我知道 xamarin 形式的事件 droid 的命名略有不同,但我假设它的工作原理相同。我还没有尝试过,因为我需要一个适用于 Android 和 iOS 的解决方案。但由于您只是针对 android,如果您在这么长时间后仍然需要解决方案,希望能有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。