1、UIEvent简介
UIEvent是代表iOS系统中的一个事件,一个事件包含一个或多个的UITouch;
UIEvent分为四类: UIEventType
typedef NS_ENUM(NSInteger, UIEventType) { UIEventTypeTouches,//触摸事件类型 iOS3.0之后可以用 UIEventTypeMotion,//摇晃事件类型 iOS3.0之后可以用 UIEventTypeRemoteControl,//遥控事件类型 iOS4.0之后可以用 UIEventTypePresses NS_ENUM_AVAILABLE_IOS(9_0),//物理按钮事件类型 iOS9.0之后可以用 };
子事件类型:UIEventSubtype
typedef NS_ENUM(NSInteger, UIEventSubtype) { //事件没有子类型 iOS3.0之后可以用 UIEventSubtypeNone = 0, //事件子类型晃动的设备 iOS3.0之后可以用 UIEventSubtypeMotionShake = 1, //遥控的事件子类型 iOS4.0之后可以用 UIEventSubtypeRemoteControlPlay = 100,//播放 UIEventSubtypeRemoteControlPause = 101,//暂停 UIEventSubtypeRemoteControlStop = 102,//停止 UIEventSubtypeRemoteControlTogglePlayPause = 103,//播放和暂停之间切换【操作:播放或暂停状态下,按耳机线控中间按钮一下】 UIEventSubtypeRemoteControlNextTrack = 104,//下一曲【操作:按耳机线控中间按钮两下】 UIEventSubtypeRemoteControlPreviousTrack = 105,//上一曲【操作:按耳机线控中间按钮三下】 UIEventSubtypeRemoteControlBeginSeekingBackward = 106,//快退开始【操作:按耳机线控中间按钮三下不要松开】 UIEventSubtypeRemoteControlEndSeekingBackward = 107,//快退结束【操作:按耳机线控中间按钮三下到了快退的位置松开】 UIEventSubtypeRemoteControlBeginSeekingForward = 108,//快进开始【操作:按耳机线控中间按钮两下不要松开】 UIEventSubtypeRemoteControlEndSeekingForward = 109,//快进结束【操作:按耳机线控中间按钮两下到了快进的位置松开】 };
2、相关API
NS_CLASS_AVAILABLE_IOS(2_0) @interface UIEvent : NSObject @property(nonatomic,readonly) UIEventType type NS_AVAILABLE_IOS(3_0);//事件类型 @property(nonatomic,readonly) UIEventSubtype subtype NS_AVAILABLE_IOS(3_0);//子事件类型 @property(nonatomic,readonly) NSTimeInterval timestamp;//事件发生时间 //返回与接收器相关联的所有触摸对象。 #if UIKIT_DEFINE_AS_PROPERTIES @property(nonatomic, readonly, nullable) NSSet <UITouch *> *allTouches; #else - (nullable NSSet <UITouch *> *)allTouches; #endif - (nullable NSSet <UITouch *> *)touchesForWindow:(UIWindow *)window;//返回属于一个给定视图的触摸对象,用于表示由接收器所表示的事件。 - (nullable NSSet <UITouch *> *)touchesForView:(UIView *)view;//返回属于一个给定窗口的接收器的事件响应的触摸对象。 - (nullable NSSet <UITouch *> *)touchesForGestureRecognizer:(UIGestureRecognizer *)gesture NS_AVAILABLE_IOS(3_2);//返回触摸对象被传递到特殊手势识别 //会将丢失的触摸放到一个新的 UIEvent 数组中,你可以用 coalescedTouchesForTouch(_:) 方法来访问 - (nullable NSArray <UITouch *> *)coalescedTouchesForTouch:(UITouch *)touch NS_AVAILABLE_IOS(9_0); //辅助UITouch的触摸,预测发生了一系列主要的触摸事件。这些预测可能不完全匹配的触摸的真正的行为,因为它的移动,所以他们应该被解释为一个估计。 - (nullable NSArray <UITouch *> *)predictedTouchesForTouch:(UITouch *)touch NS_AVAILABLE_IOS(9_0); @end