Xamarin / iOS - 如何从硬件键盘禁用选项卡键代码



我有一个情况,即蓝牙条形码扫描仪在 Xamarin Forms 应用程序中充当硬件键盘。条形码被编码为包含一些需要解析到不同字段中的信息。

遗憾的是,某些数据是制表符。 iOS 在我的应用程序中接收此硬件事件,一旦选项卡通过,下一个输入字段就会聚焦,条形码数据将继续转储到该字段中(条形码扫描仪通过"顺序"读取数据,就像模拟您正在键入数据一样(。

无论如何;我正在拦截Xamarin/iOS中Entry(UITextView(中的"制表符"字符。

我已经在Entry上设置了一个扩展,并将自定义渲染器与它相关联(MyRenderer : EntryRenderer(。搜索表明使用Control.ShouldChangeTextInRange应该适用于字符重新映射,但 tab 事件发生在它显示的不同级别。

如何阻止 iOS 中的硬件键盘"Tab"字符专注于下一个字段?

您可以使用KeyCommands在 EntryRenderer 中过滤Tab操作,如下所示:

public override UIKeyCommand[] KeyCommands
{
get
{
UIKeyCommand newForwardKeyCommand = UIKeyCommand.Create(new NSString("t"), 0, new ObjCRuntime.Selector("Excute"));
UIKeyCommand newBackKeyCommand = UIKeyCommand.Create(new NSString("t"), UIKeyModifierFlags.Shift, new ObjCRuntime.Selector("Excute"));
UIKeyCommand[] keyCommands = { newForwardKeyCommand, newBackKeyCommand };
return keyCommands;
}
}
[Export("Excute")]
private void Excute()
{
Console.Write("Excute!");
}

参考:https://stackoverflow.com/a/30876304/5474400

最新更新