·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> iOS中的触摸事件

iOS中的触摸事件

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

触摸事件一共有四种状态

 

  1. 触摸开始 :用手指按在屏幕上

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

  1. 触摸移动:手指在屏幕上移动

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

//这个方法会在手指移动的过程中反复的被调用

  1. 触摸结束:手指离开屏幕

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

  1. 触摸被取消 :触摸被取消(一般情况是系统事件将本次次触摸打断 如:电话呼入)

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

 

ps:一个完整的触摸事件必须至少包含开始和结束

 

触摸对象的属性

1>  view 发生触摸事件的view

2>  window 发生触摸事件的窗口

3>  phase 相位属性,用于自定义手势

4>  timestamp 发生触摸的时间

//3和4在实际开发中用到的非常少通常用于自定义手势

5>  tapCount 发生触摸时短时间内的连按次数

 

触摸对象的常用方法:

1>    locationInView:view view传入某一个视图 返回值是触摸的点在该视图上的位置

2>    PReviousLocationInView: view 上一次点击在某个视图中的位置

3>    UITouch *touch = [touches anyObject]; 在单点触摸的处理中通常用此方法从touchues数组中返回touchu对象

 

多点触摸的处理

首先需要设置视图允许多点触摸

[view setMultipleTouchEnabled:YES];

view为需要设置允许多点触摸的视图

在实际应用过程中

需要在处理时分别对touches这个集合中的每一个touch对象分别处理即可

 

因为touches是一个NSSet,所以造成了多点触摸时取出的touch对象的顺序没办法固定,但是在一次触摸事件的过程中即该视图没有调用touchesEnded:方法和touchesCancelled:两个方法之前touches里面的touch顺序是不变的

示例代码:

http://dl.vmall.com/c01at1z0hp