iOS-UIEvent

          如有错误,请多多指点

       

        一个UIEvent对象(或者,一个简单的事件对象)表示在iOS的一个事件。有三种类型的事件:触摸事件、摇晃事件和遥控事件。遥控控制事件允许响应对象接收来自外部附件或耳机的命令,以便它可以管理音频和视频的管理。例如播放视频或跳转到下一个音轨。摇晃事件iOS3被引入和遥控事件iOS4被引入。

        一个触摸类型的事件对象包含一个或多个触摸(即,在屏幕上的手指手势),有一定的关系的事件。一个触摸被一个UITouch对象所表示。当一个触摸事件被触发时,系统将会传给适合的相应对象并通过发送一个消息调用UIResponder方法如:touchesBegan : withEvent : 。响应对象可以分配触摸事件到合适的触摸类型并正确的处理它们。   UIEvent中的方法允许让你回去所有的触摸事件( allTouchs) 或者给定的视图或窗口(touchesForView: or touchesForWindow:)。它也可以分辨从响应对象传递过来的事件对象发生的时间(timestamp)。

       一个UIEvent对象代表一个触摸事件贯穿可多个触摸事件的序列。UIKit 重用同一个UIEvent实例来分配每一个事件到应用程序。你不需要保持一个事件对象或者任何从事件对象返回的对象。如果你需要保存事件对象然后传递到另外一个对象,你需要从UITouch 或者UIEvent 对象中复制信息。

       你可以通过类型(type)属性和子类型(subtype)属性获取事件类型和事件子类型。UIEvent定义了事件的类型为触摸、摇晃和遥控事件。它也定义了遥控事件的子类型,以及为遥控事件定义一系列的子类型,例如“播放”或“上一曲目”。在响应链中第一响应或任意响应者都能够实现关于UIResponder(例如, motionBegan:withEvent:)去处理摇动-摇晃事件。一个响应者去处理遥控事件,必须实现 remoteControlReceivedWithEvent:的UIResponder方法:

       touchesForGestureRecognizer:  的方法被 引入是在iOS3.2,它允许你能查询所有触摸的一个正在处理的一个手势对象(一个UIGestureRecognizer  子类的实例)。


获取事件中的触摸对象

/* 1. - allTouches
 * 返回值:返回与接收器相关联的所有触摸对象。
 * iOS2.0之后可以用
 * Objective-C
 */
- (nullable NSSet <UITouch *> *)allTouches;

/* 2. – touchesForView:
 * 返回值:返回属于一个给定视图的触摸对象,用于表示由接收器所表示的事件。
 * iOS2.0之后可以用
 * Objective-C
 */
- (nullable NSSet <UITouch *> *)touchesForWindow:(UIWindow *)window;

/* 3. – touchesForWindow:
 * 返回值:返回属于一个给定窗口的接收器的事件响应的触摸对象。
 * iOS2.0之后可以用
 * Objective-C
 */
- (nullable NSSet <UITouch *> *)touchesForView:(UIView *)view;</span>



获取事件属性

/* 事件发生的时间。(只能读取)
 * iOS2.0之后可以用
 */
@property(nonatomic,readonly) NSTimeInterval  timestamp
 

获取事件类型

/* 类型事件 (只读)
 * iOS3.0之后可以用
 */
@property(nonatomic,readonly) UIEventType     type NS_AVAILABLE_IOS(3_0);
/* 子类型事件 (只读)
 * iOS3.0之后可以用
 */
@property(nonatomic,readonly) UIEventSubtype  subtype NS_AVAILABLE_IOS(3_0);

获取触摸的一个手势

/* 返回值:返回触摸对象被传递到特殊手势识别
 * iOS3.2之后可以用
 *
 */
- (nullable NSSet <UITouch *> *)touchesForGestureRecognizer:(UIGestureRecognizer *)gesture NS_AVAILABLE_IOS(3_2);

数据类型

1.UIEvenType

/* UIEventTypeTouches:触摸事件类型 iOS3.0之后可以用
 * UIEventTypeMotion :摇晃事件类型 iOS3.0之后可以用
 * UIEventTypeRemoteControl:遥控事件类型 iOS4.0之后可以用
 * UIEventTypePresses:物理按钮事件类型 iOS9.0之后可以用
 */
typedef NS_ENUM(NSInteger, UIEventType) {
    UIEventTypeTouches,
    UIEventTypeMotion,
    UIEventTypeRemoteControl,
    UIEventTypePresses NS_ENUM_AVAILABLE_IOS(9_0),
};

2.UIEventSubtype

typedef NS_ENUM(NSInteger, UIEventSubtype) {
    //事件没有子类型 iOS3.0之后可以用
    UIEventSubtypeNone                              = 0,

    //事件子类型晃动的设备 iOS3.0之后可以用
    UIEventSubtypeMotionShake                       = 1,

    //遥控播放的事件子类型 iOS4.0之后可以用
    UIEventSubtypeRemoteControlPlay                 = 100,

    //遥控暂停的事件子类型 iOS4.0之后可以用
    UIEventSubtypeRemoteControlPause                = 101,

    //遥控停止的事件子类型 iOS4.0之后可以用
    UIEventSubtypeRemoteControlStop                 = 102,

    //遥控播放和暂停之间的事件子类型 iOS4.0之后可以用
    UIEventSubtypeRemoteControlTogglePlayPause      = 103,

    //遥控下一个的事件子类型 iOS4.0之后可以用
    UIEventSubtypeRemoteControlNextTrack            = 104,

    //遥控上一个的事件子类型 iOS4.0之后可以用
    UIEventSubtypeRemoteControlPreviousTrack        = 105,

    //遥控子类事件开始后寻找 iOS4.0之后可以用
    UIEventSubtypeRemoteControlBeginSeekingBackward = 106,

    //遥控子类事件结束后寻找 iOS4.0之后可以用
    UIEventSubtypeRemoteControlEndSeekingBackward   = 107,

    //遥控子类事件开始前寻找 iOS4.0之后可以用
    UIEventSubtypeRemoteControlBeginSeekingForward  = 108,

    //遥控子类事件开始前寻找 iOS4.0之后可以用
    UIEventSubtypeRemoteControlEndSeekingForward    = 109,
};
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u014068781

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值