关于macOS 事件响应架构 可以参看我的另一篇文章macOS AppKit 的事件响应简介,本文是对事件响应的经一步实践与讨论,通过代码细节来展示一些实际开发中的问题与原因,仅供学习讨论.
0x00...什么是响应链
响应链是一种消息处理机制,它是由一组有序的响应者对象组成的链条.当消息进入响应链条后,由响应者对象依次判断是否能够处理该消息,当一个响应者对象不能处理此条消息时,它会将消息传递给它的继任者...对于键盘事件, 响应是从窗口的第一响应者开始;
对于鼠标/触控板事件,响应是从用户操作的view开始;
如果事件消息在最初没有响应,那么响应链将按照视图的层级结构依次传递消息,直到窗口对象(NSWindow...XCResponseView Responder Chain
在理解鼠标事件的响应顺序后,那么问题来了,为什么键盘事件没有响应呢?...控制台信息
0x05 一些思考
本文通过示例抛砖引玉,仅仅讨论学习响应链的冰山一角,希望对学习macOS事件响应机制有所帮助,为了大家能够更深入了解响应链,留一些思考问题,激发大家的主动学习姿势:
NSEvent