IOS开发之触摸UITouch

      在IOS中,触摸表示手指在屏幕上的接触或移动并作为唯一多点触摸序列的一部分。当手指触摸屏幕并在上面移动的时候,系统持续的发送这些触摸事件对象给应用程序。在触摸序列中,事件为所有触摸提供了快照,最重要的触摸为新收到的或在特定视图中改变的。多触摸序列从第一个手指触摸到屏幕开始,其他的手指可能接下来再触摸屏幕,并且所有在屏幕上的手指进行移动,当最后一个手指离开屏幕时序列结束。
      触摸,用 UITouch对象来表示,包括触摸阶段和触摸位置。
      触摸阶段,指示什么时候触摸开始,是否移动和什么时候触摸结束——即合适最后一根手指离开屏幕。 
      触摸位置表示与触摸相关联的对象即触摸点在对象的内部。当手指触摸到屏幕,触摸就与窗口和视图相关联,关联关系一直维持到事件结束。如果多点触摸同时到达,当它们所关联的视图相同时则进行统一处理。否则,如果两个触摸在同一个视图以上很快的速度先后到达,则被认为是多次点击。触摸对象报错触摸的位置及上次触摸位置(如果存在)在它所对应的窗口或视图中。

      触摸事件的处理方法:
      应用程序在一个给定的触摸阶段当有新的触摸或改变的触摸时发送这些消息:  

      -(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 //触摸被打断时候触发该函数

     看到这里,上面的东西估计各位也没记住多少!还是实际点演示代码实在,接下里有图有真相!下面的代码实现的是在屏幕上画线条的功能!

      IOS开发之触摸UITouch

      首先我们知道线和点的关系,一条线可以是由一系列的点组成的。所有我们在屏幕上画线就相当于在屏幕上点了很多点,这些点是相连着的。
      首先在 .h文件里面声明一个可变数组来接纳手指画出来的所有点。
       @property(retain,nonatomic)NSMutableArray*pointArray;
        
       然后在.m文件实现触摸
//================ 触摸开始触发该函数 ================

//集合对象touches代表触点

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

{

    self.pointArray=[[NSMutableArray alloc]init];//每次都新创建一个点数组,相当于从新开始

    UITouch *touch=[touches anyObject];//获取到触摸对象

    CGPoint pt=[touch locationInView:self];//获取到触摸所对应视图的位置

    [self.pointArray addObject:[NSValue valueWithCGPoint:pt]];//触点放入数组 NSValueC结构CGPoint转换为OCNSValue类型对象

}

//================触摸移动触发该函数================

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

{

    UITouch *touch=[touches anyObject];//获取到触摸对象

    CGPoint pt=[touch locationInView:self];//获取到触摸所对应视图的位置

    [self.pointArray addObject:[NSValue valueWithCGPoint:pt]];//触点放入数组

    [self setNeedsDisplay]; //重绘界面 自动调用drawRect方法

}

//================触摸结束触发该函数================

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

{

    NSLog(@"%d",self.pointArray.count); //输出你的手指经过了多少个点

}

//================触摸被打断时候触发该函数================

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

{

   //此处可以设置当触摸被另一个系统事件(来电等)打断时候执行的事件

}

IOS开发之触摸UITouch


     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值