首页 > 解决方案 > 物理键盘事件挂钩不适用于 Xamarin iOS 表单中的 Master-Detail 应用程序

问题描述

我的需要是挂钩来自 HID 扫描仪(与物理键盘的工作方式相同)的事件,以在 Master-detail 应用程序上读取 Xamarin 表单中的条形码。我的页面上没有任何输入字段。我发现它在 Android 和 UWP 上运行良好,但在 iOS 上不起作用。

让我向您解释仅适用于 iOS,因为它不起作用。(Android 和 UWP 听按键没有问题)

  1. 我有大师详细信息应用程序。我需要在详细信息页面上接收按键事件。
  2. 我的页面上没有任何输入字段。我不能输入输入字段 bcoz 这是我的要求。
  3. 因此决定在详细页面级别监听关键事件
  4. 为了挂钩关键事件,我在 iOS 的详细页面渲染器中使用 AddKeyCommand(..) 添加了关键命令

取自此链接:是否可以在应用程序级别挂钩硬件键盘事件?

  1. 我已经使用 VS 2017 中为 Xamarin 表单提供的向导创建了 Master-Detail 应用程序,并在 About page renderer 中添加了上述代码。但它不起作用。“KeyRecv”处理程序未点击 HID 扫描仪的键
  2. 我用普通的单页示例尝试了相同的代码。我再次使用 VS2017 向导来创建这个示例。现在,我已经为 MainPage 创建了页面渲染器。令我惊讶的是,它可以在单页示例中使用。
  3. 所以问题是为什么不在 Master-Detail 页面中工作。
  4. 附加点。我没有在应用程序的任何地方设置焦点,既不是主细节也不是单页应用程序。
  5. OnElementChanged 在相应页面的调试期间被调用。
  6. 这些是使用上述代码创建的纯向导应用程序。

那么,iOS 上 Xamarin 表单中的主从页面应用程序有什么问题?(记住这些适用于 Android 和 UWP)

标签: c#xamarin.formshid

解决方案


在 Xamarin 的 Master-Detail 中,顶部视图控制器是 Master-Detail 页面,因此您需要从您在其渲染器中提供的链接实现该逻辑,它应该使用 PhoneMasterDetailRenderer 用于手机和 TabletMasterDetailRenderer 用于平板电脑。


推荐阅读