IOS开发之——事件处理-View拖动(67),Android程序员秋招三面蚂蚁金服

3.1 UIResponder内部提供了以下方法来处理事件

触摸事件

-(void)touchBegan:(NSSet *)touches withEvent:(UIEvent *)event;

-(void)touchMoved:(NSSet *)touches withEvent:(UIEvent *)event;

-(void)touchEnded:(NSSet *)touches withEvent:(UIEvent *)event;

-(void)touchCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

加速计事件

-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;

-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;

-(void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;

远程控制事件

-(void)remoteControlReceivedWithEvent:(UIEvent *)event;

四 UIView的触摸事件处理


4.1 UIView是UIResponder的子类,可以实现下列4个方法处理不同的触摸事件

一根或者多根手指开始触摸view,系统会自动调用view的下面方法

  • -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

一根或多根手指在view上移动,系统会自动调用view的下面方法(随着手指的移动持续调用该方法)

  • -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

一根或者多根手指离开view,系统会自动调用view的下面方法

  • -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

触摸结束前,某个系统事件(例如电话呼入)会打断触摸过程,系统会自动调用下面的方法

  • -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

4.2 说明


  • touches中存放的都是UITouch对象

五 UITouch


5.1 什么是UITouch

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

  • 一根手指对应一个UITouch对象

5.2 UITouch的作用

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

5.3 手指移动时

  • 当手指移动时,系统会更新同一个UITouch对象,使之能够一直保存该手指的触摸位置

5.4 常用的属性

触摸产生时所处的窗口

@property(nonatomic,readonly,retain)UIWindow *window;

触摸产生时所处的视图

@property(nonatomic,readonly,retain)UIView *view;

短时间内点击屏幕的次数,可以根据tapCount判断单击、双击或更多的点击

@property(nonatomic,readonly)NSUInteger tapCount;

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

@property(nonatomic,readonly)NSTimeInterval timestamp;

当前触摸事件所处的状态

@property(nonatomic,readonly)UITouchPhase phase;

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

@property(nonatomic,readonly)NSTimeInterval timestamp;

当前触摸事件所处的状态

@property(nonatomic,readonly)UITouchPhase phase;


版权声明:本文为m0_66155486原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。