【问题标题】:External Bluetooth Keyboard integration in IOS 7IOS 7 中的外部蓝牙键盘集成
【发布时间】:2017-07-01 00:34:59
【问题描述】:

我需要在我的应用程序中支持外部键盘功能,并且需要在应用程序中检测到 Alt+Tab Tab 等组合键来触发某些事件。在 IOS 6 中,我已经覆盖了

- (void)sendEvent:(UIEvent *)anEvent;

UIApplication 子类中的函数,用于获取外部键盘上的按键组合。

但是现在我正在 IOS 7 中测试我的应用程序,并且 sendEvent 似乎甚至没有被任何硬件按键事件调用。

任何解决方案..?

【问题讨论】:

    标签: bluetooth keyboard ios7 uiapplication


    【解决方案1】:

    在 iOS 7 中,使用新的 UIKeyCommand 类和 UIResponder 链可以 100% 支持处理蓝牙键盘上的键盘快捷键。 I did blog about this,但这是要点:

    在您的响应程序链中的某处为keyCommands 添加一个返回UIKeyCommand 对象数组的方法:

    - (NSArray *)keyCommands {
        UIKeyCommand *commandF = [UIKeyCommand keyCommandWithInput:@"f" modifierFlags:UIKeyModifierCommand action:@selector(handleCommandF:)];
        return @[commandF];
    }
    

    然后,当按下 ⌘F 时(在文本输入视图中),响应程序链将查找 handleCommandF 方法。如果有多个定义,它将使用范围最窄的一个(例如,视图本身优先于视图控制器)。

    请注意,这仅在输入(例如UITextFieldUITextView)是第一响应者时才有效。如果你想在你的应用程序中使用“全局”快捷方式,你可以在屏幕外隐藏 UITextField 并专注于它。

    【讨论】:

    • 最后一行缺少 ](右方括号)。
    • 谢谢! (为 SO 填充)
    • 您不一定需要 UITextField。您可以创建一个自定义 UIView 子类,该子类为 canBecomeFirstResponder: 返回 YES,然后将该自定义视图放入您的视图层次结构中并将其设置为第一响应者。
    【解决方案2】:

    在IOS7.x中检测硬件键盘按钮按下事件的一种方法可以是覆盖该方法 -(void)handleKeyUIEvent:(id)UIApplication 中的一个事件。

    但这是 ios 的私有方法,可能会导致应用商店拒绝。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多