Cocoa 键盘事件

| 置顶
| Cocoa 文集声明与阅读导向


前言

一、匆匆一阅

应用(NSApp)获得键盘事件(Key Event)之后,最多会使用四个流程来处理该事件。假如一个流程接受了该事件,那么就意味着完成该事件的响应。

二、正文

键盘事件被分为四种操作,按次序寻找合适的操作。
先上图:

Cocoa 键盘事件_第1张图片
图片来源于Apple官方文档

1、修饰键+字符键(Key equivalents)

A key equivalents is a character bound to some view in a window.
就是修饰键加字符键。

修饰键包括:CapsLock、Shift、Control、Option、Command、NumericPad、Help、Function。可以在NSEventModifierFlags中找到。

应用遍历关键窗口(Key Window)中每一个对象的performKeyEquivalent方法,直到有一个对象返回YES。如果没有一个对象返回YES,就会发送给菜单栏(menu bar),或一些Cocoa对象。例如NSButton,NSMenu,NSMatrix和NSSavePanel。这些类都提供了默认的处理实现。

注意:从OS X v10.5开始,如果key equivalents没有被识别出来,就会发送给NSWindow调用第一响应者的NSKeyDown事件。同时在处理控制类的按键时(Control-Key)会先发送给NSWindow的performKeyEquivalent,这样做的目的是使Control键更多为menu服务。

2、界面控制键(Keyboard interface control)
关键窗口(Key Window)将此类键转译为控件事件。例如:Tab建或者Shift-Tab键 转译为 焦点下一个、焦点上一个;空格 转译为按钮的点击事件;
视图之间的顺序是通过视图的
unowned(unsafe) var nextKeyView: [NSView]? { get set }
方法来设置的。

Cocoa 键盘事件_第2张图片
图片来源于Apple官方文档

3、行为键(Keyboard action)
由NSResponder类中的一些方法进行处理。例如keyDown、KeyUp。

4、用于输入的字符(Character or characters for insertion as text)
输入到输入框

三、传送门

笔者相关文档
Cocoa应用接收外设事件的过程

你可能感兴趣的:(Cocoa 键盘事件)