触摸事件一共有四种状态
- 触摸开始 :用手指按在屏幕上
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event
- 触摸移动:手指在屏幕上移动
-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event;
//这个方法会在手指移动的过程中反复的被调用
- 触摸结束:手指离开屏幕
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event;
- 触摸被取消 :触摸被取消(一般情况是系统事件将本次次触摸打断 如:电话呼入)
-(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