UITouch【触摸】属性及方法

6 篇文章 0 订阅

UITouch.h【触摸】

官方API网址: https://developer.apple.com/reference/uikit/uitouch?language=objc#symbols

//当用户用一根手指触摸屏幕时,会创建一个与手指相关联的UITouch对象,一根手指对应一个UITouch对象

//UITouch的作用保存着跟手指相关的信息,比如触摸的位置、时间、阶段

//当手指移动时,系统会更新同一个UITouch对象,使之能够一直保存该手指在的触摸位置,当手指离开屏幕时,系统会销毁相应的UITouch对象

//提示:iPhone开发中,要避免使用双击事件!

//当手指接触到屏幕,不管是单点触摸还是多点触摸,事件都会开始,直到用户所有的手指都离开屏幕。期间所有的UITouch对象都被包含在UIEvent事件对象中,由程序分发给处理者。事件记录了这个周期中所有触摸对象状态的变化。

//只要屏幕被触摸,系统就会报若干个触摸的信息封装到UIEvent对象中发送给程序,由管理程序UIApplication对象将事件分发。一般来说,事件将被发给主窗口,然后传给第一响应者对象(FirstResponder)处理。

 

@class UIWindow, UIView,UIGestureRecognizer;

//触摸状态

typedef NS_ENUM(NSInteger,UITouchPhase) {

    UITouchPhaseBegan,             //触摸开始.

    UITouchPhaseMoved,             //接触点移动.

    UITouchPhaseStationary,        //接触点无移动.

    UITouchPhaseEnded,             //触摸结束.

    UITouchPhaseCancelled,         //触摸取消

};

 

//iOS9中提供如下的接口用于检查设备是否支持3D Touch

typedef NS_ENUM(NSInteger,UIForceTouchCapability) {

   UIForceTouchCapabilityUnknown = 0,     //3D Touch检测失败

    UIForceTouchCapabilityUnavailable = 1//3D Touch不可用

    UIForceTouchCapabilityAvailable = 2     //3D Touch可用

};

//触摸类型

typedef NS_ENUM(NSInteger,UITouchType) {

    UITouchTypeDirect,                       //直接触摸

    UITouchTypeIndirect,                     // 间接触摸

    UITouchTypeStylus NS_AVAILABLE_IOS(9_1),// 触摸

}NS_ENUM_AVAILABLE_IOS(9_0);

 

//触摸特性

typedef NS_OPTIONS(NSInteger,UITouchProperties) {

    UITouchPropertyForce = (1UL <<0),      //力度

    UITouchPropertyAzimuth = (1UL <<1),    //方位

    UITouchPropertyAltitude = (1UL <<2),   //高度

    UITouchPropertyLocation = (1UL <<3),   //位置

} NS_AVAILABLE_IOS(9_1);

 

@interface UITouch : NSObject

 

//时间戳记录了触摸事件产生或变化时的时间。单位是秒。

@property(nonatomic,readonly) NSTimeInterval      timestamp;

//触摸事件在屏幕上有一个周期,即触摸开始、触摸点移动、触摸结束,还有中途取消。通过phase可以查看当前触摸事件在一个周期中所处的状态。

@property(nonatomic,readonly) UITouchPhase        phase;

//轻击(Tap)操作和鼠标的单击操作类似,tapCount表示短时间内轻击屏幕的次数。因此可以根据tapCount判断单击、双击或更多的轻击。

@property(nonatomic,readonly) NSUInteger          tapCount;

//触摸的类型

@property(nonatomic,readonly) UITouchType         type NS_AVAILABLE_IOS(9_0);

//触摸的半径

@property(nonatomic,readonly) CGFloat majorRadiusNS_AVAILABLE_IOS(8_0);

//触摸半径的容差(点)。

@property(nonatomic,readonly) CGFloatmajorRadiusTolerance NS_AVAILABLE_IOS(8_0);

//触摸产生时所处的窗口。由于窗口可能发生变化,当前所在的窗口不一定是最开始的窗口。

@property(nullable,nonatomic,readonly,strong) UIWindow                        *window;

//触摸产生时所处的视图。由于视图可能发生变化,当前视图也不一定时最初的视图。

@property(nullable,nonatomic,readonly,strong) UIView                          *view;

//正在接收触摸对象的手势识别。

@property(nullable,nonatomic,readonly,copy)   NSArray <UIGestureRecognizer *>*gestureRecognizers NS_AVAILABLE_IOS(3_2);

  

//现在触摸的坐标//函数返回一个CGPoint类型的值,表示触摸在view这个视图上的位置,这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置。

-(CGPoint)locationInView:(nullable UIView *)view;

 

//上一次触摸的坐标//该方法记录了前一个坐标值,函数返回也是一个CGPoint类型的值,表示触摸在view这个视图上的位置,这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置。

-(CGPoint)previousLocationInView:(nullable UIView *)view;

//现在触摸的精确的坐标

-(CGPoint)preciseLocationInView:(nullable UIView *)viewNS_AVAILABLE_IOS(9_1); 

//上一次触摸的精确的坐标

-(CGPoint)precisePreviousLocationInView:(nullable UIView *)viewNS_AVAILABLE_IOS(9_1);

 

//触摸的力度

@property(nonatomic,readonly) CGFloat forceNS_AVAILABLE_IOS(9_0);

//触摸的最大的力度

@property(nonatomic,readonly) CGFloatmaximumPossibleForce NS_AVAILABLE_IOS(9_0);

 

//沿着x轴正向的方位角,当与x轴正向方向相同时,该值为0;view参数为nil时,默认为keyWindow返回触针的方位角(弧度)。

-(CGFloat)azimuthAngleInView:(nullable UIView *)viewNS_AVAILABLE_IOS(9_1);

//当前触摸对象的方向上的单位向量view参数为nil时,默认为keyWindow返回在触针的方位角的方向指向的单位矢量。

-(CGVector)azimuthUnitVectorInView:(nullable UIView *)viewNS_AVAILABLE_IOS(9_1);

 

//当笔平行于平面时,该值为0

//当笔垂直于平面时,该值为Pi / 2

//触针的高度(单位为弧度)。

@property(nonatomic,readonly) CGFloat altitudeAngleNS_AVAILABLE_IOS(9_1);

 

//当每个触摸对象的触摸特性发生变化时,该值将会单独增加,返回值是NSNumber 索引号,让您关联与原来的触摸更新的联系

@property(nonatomic,readonly) NSNumber *_Nullable estimationUpdateIndexNS_AVAILABLE_IOS(9_1);

//当前触摸对象估计的触摸特性,返回值是UITouchPropertyies一组触摸属性,这些属性将得到更新。

@property(nonatomic,readonly) UITouchPropertiesestimatedProperties NS_AVAILABLE_IOS(9_1);

//一组期望在未来的更新报文的触摸性能。

@property(nonatomic,readonly) UITouchPropertiesestimatedPropertiesExpectingUpdates NS_AVAILABLE_IOS(9_1);


@end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值