谁首先捕获了UIControlEvents TouchDown?

时间:2012-07-22 01:53:06

标签: ios controls

首先是UIApplication,还是Control?

之前我认为第一个是UIApplication。 但现在我想也许第一个是控制。

基础如下:

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIControl_Class/Reference/Reference.html#//apple_ref/occ/cl/UIControl

sendAction:至:forEvent: 响应给定事件,将操作消息转发给应用程序对象以分派给目标。

这使我相信UIControl在申请之前首先获得控制事件。

1 个答案:

答案 0 :(得分:2)

UIEvent类和UIControlEvent常量不是一回事。事件对象封装有关触摸序列的信息,控制事件是UIControl对其边界内特定触摸序列的解释。

序列是:

  1. 操作系统接收并将UIEvent对象传递给UIApplication。
  2. [UIApplication sendEvent:]将活动发送给 关键窗口
  3. [UIWindow sendEvent:]将(触摸)事件发送给 点击测试视图
  4. [UIView touches...]名为

    的事件处理方法

    UIControl对象解释触摸并确定UIControlEvent常量(如果有)

  5. [UIControl sendAction:to:forEvent:]被调用一次或多次

  6. [UIApplication sendAction:to:from:forEvent:]被称为
  7. 操作在目标
  8. 上执行

    所以UIEvent以UIApplication开头,但UIControlEvent以UIControl开头。