美文网首页Mac开发云集Mac开发iOS之MAC端开发
Cocoa应用接收外设事件的过程

Cocoa应用接收外设事件的过程

作者: STrawberryer | 来源:发表于2017-08-19 17:35 被阅读123次

一、匆匆一阅

内核接收到外设的触发事件后,将事件打包成一个数据包(Event)传输给Window Server。Window Server通过应用端口(run-loop port)将事件放入应用的事件容器(Event Source)中。应用在主循环(Main Loop)处理收到的事件。

图片来源于Apple官方文档

二、正文

第一步:事件如何进入应用(How an Event Enters a Cocoa Application)

在NSApplication初始化的时候(即调用[NSApplication sharedApplication];),会生成一个
事件容器(Event Source),用来从各种输入来源接收事件(Event)。处理事件的顺序是 先进先出形势(FIFO)

图片来源于Apple官方文档

第二步:应用内部的事件分发(Event Dispatch)

1、在应用的主循环(Main Loop)中,每一次循环都会从事件容器(Event Source)中获取一个事件,然后处理。假如没有事件则不处理,继续下一个循环。

通过调用如下方法获取下一个事件(Event)
nextEventMatchingMask:untilData:inMode:dequeue
方法具体情况如下:
(nullable NSEvent *)nextEventMatchingMask:(NSEventMask)mask untilDate:(nullable NSDate *)expiration inMode:(NSRunLoopMode)mode dequeue:(BOOL)deqFlag;

2、大多数情况下获取到一个事件(Event)后,我们应该把事件转交给应用(NSApplication)处理,当然你也可以交给你自己喜欢的东西去处理获取到的事件。

通过调用如下方法把事件(Event)转发给应用处理(NSApplication)
sendEvent:event
方法具体情况如下:
(void)sendEvent:(NSEvent *)event;

3、大多数情况下应用(NSApplication)只是将得到的Event分发给窗口(NSWindow)。然后窗口(NSWindow)会将部分的事件转发给视图(NSView),例如:mouseDown、keyDown。

三、传送门

阅读导向

Cocoa 文集声明与阅读导向

笔者相关文档:

Mac科技相关阅读导向

Cocoa 鼠标、触摸板事件
[Cocoa 键盘事件 Keyboard Events

相关文章

  • Cocoa应用接收外设事件的过程

    一、匆匆一阅 内核接收到外设的触发事件后,将事件打包成一个数据包(Event)传输给Window Server。W...

  • 读Cocoa事件处理机制有感(Event Architectur

    原文链接:读Cocoa事件处理机制有感(Event Architecture) 每个应用程序都有一种接收(Wind...

  • App启动过程

    启动过程概述 Launcher 接收到点击事件,获取应用信息,向ActivityManagerService(AM...

  • 1.

    title bar 标题栏keyWindow 可以接收输入事件(键盘,鼠标,触控板等外设)的窗口mainWindo...

  • 窗口NSWindow

    一.keyWindow和mainWindow 可以接收输入事件(键盘,鼠标,触控板等外设)的窗口对象称为keyWi...

  • iphone开发 IOS 组织架构图

    Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发ios应用有很大的帮助。 1、Cocoa是什么? ...

  • IOS 整体框架类图值得收藏

    Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。 1、Cocoa是什么? ...

  • iOS中Cocoa框架·Runtime及isa指针知识·填坑

    Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。 1、Cocoa是什么? ...

  • Javascript-Event事件(一)

    事件传播的过程 捕获 冒泡 DOM事件流 捕获 由不太具体的节点更早接收事件,而最具体的元素最后接收事件,机制与冒...

  • Cocoa 键盘事件

    | 置顶| Cocoa 文集声明与阅读导向 前言 一、匆匆一阅 应用(NSApp)获得键盘事件(Key Event...

网友评论

  • 背靠背的微笑:[STApplication sharedApplication] :STApplication是什么呢?
    STrawberryer:啊~~~
    是我自己写的 继承 NSApplication 的类。
    这就改过来

本文标题:Cocoa应用接收外设事件的过程

本文链接:https://www.haomeiwen.com/subject/etstdxtx.html