iOS事件处理机制

2019-02-17  本文已影响0人  hehc08

事件类型

iOS的事件可以分为三类:触摸事件,加速计事件,远程控制事件

iOS中不是任何对象都能处理对象,只有继承了UIResponder的对象才能接收并处理事件. ---->响应者对象

typedef NS_ENUM(NSInteger, UIEventType) {
    UIEventTypeTouches,
    UIEventTypeMotion,
    UIEventTypeRemoteControl,
};

//事件类型
@property(nonatomic,readonly) UIEventType     type 
@property(nonatomic,readonly) UIEventSubtype  subtype 
//事件产生的时间
@property(nonatomic,readonly) NSTimeInterval  timestamp;

事件的传递

事件与runloop

当我们触发了事件(触摸/锁屏/摇晃等)后,

image.png
0 - [AView touchesBegan:withEvent
1 - [UIWindow _sendTouchesForEvent]
2 - [UIWindow sendEvent]           
3 - [UIApplication sendEvent]      
4 __dispatchPreprocessEventFromEventQueue
5 __handleEventQueueInternal
6 _CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION_
7 _CFRunLOOPDoSource0
8 _CFRunLOOPDoSources1
9 _CFRunLoopRun
10 _CFRunLoopRunSpecific
11 GSEventRunModal
12 UIApplication
13 main
14 start

手势识别

上一篇下一篇

猜你喜欢

热点阅读