概览
在 iOS App 和用 Mac Catalyst 构建的 Mac App 中,系统会通过向活跃 App 响应器链中的响应器对象发送按键事件来报告用户在实体键盘上的按键操作。
响应器链是一系列关联的 UIResponder
对象,例如,UIViewController
和 UIApplication
,这些对象用于处理事件或将处理事件的责任转移给 App 中的其他响应器。要进一步了解响应器和响应器链,请参阅“使用响应器和响应器链处理事件”。
检测按键操作
要检测用户在实体键盘上的按键操作,请覆盖 App 委托或主视图控制器等 App 响应器对象中的 pressesBegan(_:with:)
。
要确定用户按下的按键,请遍历整个按键事件集合,检查每个按键事件的 key
属性。使用 charactersIgnoringModifiers
来确定按键的文本值,以及响应器是否应该处理按键操作。如果响应器没有处理按键操作,请在超类中调用 pressesBegan(_:with:)
,将按键事件发送到活跃响应器链中的下一个响应器。
例如,在下面的代码摘录中,当用户按下左箭头键和右箭头键时,游戏人物会向后和向前跑动:
检测松开按键操作
覆盖响应器的 pressesEnded(_:with:)
方法可以检测用户何时松开按键。要获取关于按键的信息,请完成与检测按键操作时相同的操作;检查 presses
集合中每个按键事件的 key
属性。例如,在下面的代码摘录中,当用户松开左箭头键或右箭头键时,游戏人物会停止向特定方向跑动: