< UIKit >

UIEvent.h

2019-06-25  本文已影响0人  zhYx_

#if USE_UIKIT_PUBLIC_HEADERS || !__has_include(<UIKitCore/UIEvent.h>)
//
//  UIEvent.h
//  UIKit
//
//  Copyright (c) 2005-2018 Apple Inc. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <UIKit/UIKitDefines.h>
NS_ASSUME_NONNULL_BEGIN
@class UIWindow, UIView, UIGestureRecognizer, UITouch;



/* 事件的常规类型 <枚举> */
typedef NS_ENUM(NSInteger, UIEventType) {
    UIEventTypeTouches,                             /// 屏幕触摸事件
    UIEventTypeMotion,                              /// 设备运动事件 (如用户摇晃手机时)
    UIEventTypeRemoteControl,                       /// 遥控事件 (远程控制事件源自从耳机或外部附件接收的命令,用于控制设备上的多媒体)
    UIEventTypePresses NS_ENUM_AVAILABLE_IOS(9_0),  /// 按下物理按钮事件 (如按下Home键)
};

/* 与常规类型相关的子类型 <枚举> */
typedef NS_ENUM(NSInteger, UIEventSubtype) {
    // UIEventTypeTouches的子类型;适用于iOS 3.0 //
    UIEventSubtypeNone                              = 0,    /// 空类型
    // UIEventTypeMotion的子类型;适用于iOS 3.0 //
    UIEventSubtypeMotionShake                       = 1,    /// 摇晃设备
    // 通过遥控事件操作音频或视频;UIEventTypeRemoteControl的子类型;适用于iOS 4.0 //
    UIEventSubtypeRemoteControlPlay                 = 100,  /// 播放
    UIEventSubtypeRemoteControlPause                = 101,  /// 暂停
    UIEventSubtypeRemoteControlStop                 = 102,  /// 停止
    UIEventSubtypeRemoteControlTogglePlayPause      = 103,  /// 切换播放/暂停
    UIEventSubtypeRemoteControlNextTrack            = 104,  /// 下一曲目
    UIEventSubtypeRemoteControlPreviousTrack        = 105,  /// 上一曲目
    UIEventSubtypeRemoteControlBeginSeekingBackward = 106,  /// 开始快退
    UIEventSubtypeRemoteControlEndSeekingBackward   = 107,  /// 结束快退
    UIEventSubtypeRemoteControlBeginSeekingForward  = 108,  /// 开始快进
    UIEventSubtypeRemoteControlEndSeekingForward    = 109,  /// 结束快进
};





#pragma mark - 事件 Class
#pragma mark -
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

// 获取指定Window下的所有触摸对象
- (nullable NSSet <UITouch *> *)touchesForWindow:(UIWindow *)window;
// 获取指定View下的所有触摸对象
- (nullable NSSet <UITouch *> *)touchesForView:(UIView *)view;
// 获取指定手势识别器下的所有触摸对象
- (nullable NSSet <UITouch *> *)touchesForGestureRecognizer:(UIGestureRecognizer *)gesture NS_AVAILABLE_IOS(3_2);
// 获取指定触摸对象下的所有触摸对象(想要提高精度的App可以使用此方法来检索额外的触摸对象)
- (nullable NSArray <UITouch *> *)coalescedTouchesForTouch:(UITouch *)touch NS_AVAILABLE_IOS(9_0);
// 获取指定触摸对象下的所有预估触摸对象
- (nullable NSArray <UITouch *> *)predictedTouchesForTouch:(UITouch *)touch NS_AVAILABLE_IOS(9_0);

@end





NS_ASSUME_NONNULL_END
#else
#import <UIKitCore/UIEvent.h>
#endif

上一篇下一篇

猜你喜欢

热点阅读