iPhone OS的Touche事件

来源:互联网 发布:ios免费阅读软件 编辑:程序博客网 时间:2024/04/28 01:27

 

                                          浅谈iphone ios Touche的触摸事件

                  

 

      福胜king原创文章,如需转载,请注明:转载自福胜king的博客  http://blog.csdn.net/wfs_king  


     作为一名手机客户端的开发者,无论开发游戏还是应用,都梦想在各大market中脱颖而出。成就第二个愤怒的小鸟,因此纵观各大market的Top 10作品,都具有十足的亮点。首当其冲的就非完美的用户体验莫属 了。因此我们可以总结道:设计良好的移动客户端软件首先要让用户获得良好的操作体验,直接,便捷,精心设计的交互是一个软件成成功的关键。

            在此,和大家一起来浅谈下iphone开发下的交互事件的处理(之前困扰很久的问题...),iphone上多点触发输入是PC 和Android平台所没有的。因此iPhone OS的编程接口提供了一个集合类((NSSet *)touches)来传递用户当前的输入的组合信息,在介绍iphone OS 的触摸响应事件之前,我们先来熟悉下Cocoa类库提供的的集合类NSSetiPhone OS通过NSSet传递硬件传感器传来的各种组合触摸信息。

            首先iphone  OS 提供了关于响应触摸的四个响应函数;
1 (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {}2 (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {}3 (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {}4 (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {}
  1函数代表手指触摸:2函数代表手指移动(还未抬起):3函数代表手指抬起:4代表取消(一般情况下很少用到)    ;   
   以上四种响应触摸事件的基本流程都是一样的,最后一个方法通常由系统掉用,比如在系统内存不够时,如果你正在触摸,那么这个方法可能会被得到掉用.但是一般情况下也不需要对此方法做处理.响应触摸事件流程如下;
              

(1) 获取所有触摸信息。

可以直接使用 touches参数:

       NSMutableSet *mutableTouches = [touches mutableCopy];

也可以通过 event参数获得:

       NSSet *allTouches = [event allTouches];

(2) 依次处理每一个触摸点

通过[allTouches count]来判断是多触点还是单触点,获取第一个触摸点方法:

      UITouch *touch = [[allTouches allObjects] objectAtIndex:0];

获取第二个触摸点:

      UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];
            第三、第四多点触摸以此类推。

(3) 针对每个触摸点的处理

通过以下函数考察每个触摸点是单击还是双击:

[touch tapCount]

        注意:在使用多触摸时请务必在xxxAppDelegate类的applicationDidFinishLaunching方法中加入下面代码 [glView setMultipleTouchEnabled:YES];

             好了,趁热打铁,紧接着在下篇博文中我会分享下Cocos2d中的事件处理机制,其大致原来是iphone ios较为类似的,希望大家继续关注...