iOS多点触摸与手势

转自: http://book.51cto.com/art/201110/297453.htm


4.2.2 iOS多点触摸与手势

iOS赋予用户至少3.5英寸的宽广视野,在当时可谓令人眼前一亮。在这不大不小的舞台上,手指可以灵活地跳动,而在此之前,传统的触屏手机都只能用单指,而且很多都是电阻屏。但是自从iOS 横空出世之后,一切都改变了。

1)多点触摸

iOS彻底打破了传统手机的操作模式,多点触摸使之更为人性化。多点触摸的实现代码如下:

 
 
  1. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{  
  2.     NSUInteger numTouches = [touches count];  
  3. }  

上述方法传递一个NSSet实例与一个UIEvent实例,可以通过获取touches参数中的对象来确定当前有多少根手指触摸,touches中的每个对象都是一个UITouch事件,表示一个手指正在触摸屏幕。倘若该触摸是一系列轻击的一部分,则还可以通过询问任何UITouch对象来查询相关的属性。

同鼠标操作一样,iOS也可以有单击、双击甚至更多类似的操作,有了这些,在这个有限大小的屏幕上,可以完成更多的功能。正如上文所述,通过访问它的touches属性来查询:

 
 
  1. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{  
  2.     NSUInteger numTaps = [[touches anyObject] tapCount];  
  3. }  

2)手势

手势是指从一个或多个手指接触屏幕开始,到手指离开屏幕为止所发生的所有事件。无论这个过程耗时多长,只要还有手指停留在屏幕上,就处于某个手势之中,除非发生意外情况。

有了手势之后,屏幕才可以感应到我们的手在做什么动作。很多场合,一些控件已经能够支持双指拉开放大、捏合缩小的动作,图片的多指旋转功能灵活、方便,符合我们的生活习惯,诸如此类的功能都是多指技术应用于现实的最好证明。可以通过以下方式检测手势:

 
 
  1. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{  
  2.     If ([touches count]==2) { // 检测触摸点个数  
  3.         NSArray *twoTouches = [touches allObjects];   // 获取触摸点数组  
  4.         UITouch *first = [twoTouches objectAtIndex:0];   // 第一个触摸点  
  5.         UITouch *second = [twoTouched objectAtIndex;1];  // 第二个触摸点  
  6. CGFloat initialDistance = distanceBetweenPoints(  
  7. [first locationInView:self.view],[second  locationInView:self.view]);  // 计算两个触摸点之间的距离  
  8. }  
  9. }  

iPhone iOS 4.x可以通过设置开启屏幕的缩放功能:三指连按两次便可切换放大,在放大的情况下还可以通过三指来移动屏幕;再次三指连按两次便可恢复正常状态。

iPad iOS 4.3已经可以支持四指操作,通过各种手势,可以实现诸多以前无法实现的效果:四指向上滑动可以显示后台运行的程序;四指向左滑动可以向左切换已打开的程序,四指向右滑动则可以向右切换已打开的程序;在程序打开的情况下,四指捏合可以关闭当前程序。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值