手势学习

手势学习:除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用 UIGestureRecognizer 的衍生类別来进行判断。

一、

UIGestureRecognizer 

  • UITapGestureRecognizer   // 点一下
  • UIPinchGestureRecognizer     //  二指往內或往外拨动
  • UIRotationGestureRecognizer   //  旋转
  • UISwipeGestureRecognizer       //  滑动,快速移动
  • UIPanGestureRecognizer          //  拖移,慢速移动
  • UILongPressGestureRecognizer  // 长按

這些手势別在使用上也很简单,只要在使用前定义并添加到对应的视图上即可。

// 定义一个 recognizer, 并加到需要偵測该手势的 UIView 元件上

- (void)viewDidLoad {

UISwipeGestureRecognizer* recognizer;

// handleSwipeFrom 是偵測到手势,所要呼叫的方法

recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:selfaction:@selector(handleSwipeFrom)];

// 不同的 Recognizer 有不同的实体变数

// 例如 SwipeGesture 可以指定方向

// 而 TapGesture 則可以指定次數

recognizer.direction = UISwipeGestureRecognizerDirectionUp

[self.view addGestureRecognizer:recognizer];

[recognizer release];

}

- (void)handleSwipeFrom:(UISwipeGestureRecognizer*)recognizer {

// 触发手勢事件后,在这里作些事情

// 底下是刪除手势的方法

[self.view removeGestureRecognizer:recognizer];

}

有些手势其实是互相关联的,例如 Tap 与 LongPress、Swipe与 Pan,或是 Tap 一次与Tap 兩次。当一個 UIView 同时添加兩个相关联的手势时,到底我这一下手指头按的要算是 Tap 还是 LongPress?如果照預设作法来看,只要「先滿足条件」的就会跳出并呼叫对应方法,举例来说,如果同时注册了 Pan 和 Swipe,只要手指头一移动就会触发 Pan 然后跳出,因而永远都不會发生 Swipe;单点与双点的情形也是一样,永远都只会触发单点,不會有双点。

UIGestureRecognizer 有个方法叫做requireGestureRecognizerToFail,他可以指定某一个 recognizer,即便自己已经滿足條件了,也不會立刻触发,会等到该指定的 recognizer 确定失败之后才触发。

- (void)viewDidLoad {

// 单击的 Recognizer

UITapGestureRecognizer* singleRecognizer;

singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(handleSingleTapFrom)];

singleTapRecognizer.numberOfTapsRequired = 1; // 单击

[self.view addGestureRecognizer:singleRecognizer];

// 双击的 Recognizer

UITapGestureRecognizer* double;

doubleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(handleDoubleTapFrom)];

doubleTapRecognizer.numberOfTapsRequired = 2; // 双击

[self.view addGestureRecognizer:doubleRecognizer];

// 关键在这一行,如果双击确定偵測失败才會触发单击

[singleRecognizer requireGestureRecognizerToFail:doubleRecognizer];

[singleRecognizer release];

[doubleRecognizer release];

}

时间: 2024-11-06 15:39:05

手势学习的相关文章

iOS手势学习UIGestureRecognizer & cocos2d 手势推荐

iOS手势学习UIGestureRecognizer & cocos2d 手势推荐 手势识别类型: UILongPressGestureRecognizer  // 长按UIPanGestureRecognizer  // 慢速拖动UIPinchGestureRecognizer  // 两指向內或向外拨动UIRotationGestureRecognizer   // 旋转UISwipeGestureRecognizer   // 快速滑动UITapGestureRecognizer   //

IOS 手势学习(点击,长按,轻扫,拖拽,旋转,捏合缩放)

点击        UITapGestureRecognizer 长按        UILongPressGestureRecognizer 轻扫        UISwipeGestureRecognizer 拖拽        UIPanGestureRecognizer 旋转        UIRotationGestureRecognizer 捏合缩放 UIPinchGestureRecognizer 详细代码如下: #import "ViewController.h" @i

Android零基础入门第54节:视图切换组件ViewSwitcher

前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件. 一.ViewAnimator组件概述 ViewAnimator是一个基类,它继承了 FrameLayout,因此它表现出FrameLayout的特征,可以将多个View组件叠在一起. ViewAnimator额外增加的功能正如它的名字所暗示的一样,ViewAnimator可以在View切换时表现出动画效果. ViewAnimator及其子类的继承关系图如下图所示. ViewAnimator及其子类也

基础教程:Mac 电脑小白应该了解哪些东西?

文章素材来源:知乎 文章收录于:风云社区(www.scoee.com),提供1700多款mac软件下载. 本文提供给那些从 PC 阵营初入 Mac 的同学而准备的,我们希望从硬件和软件.设计风格和使用哲学等几个方面来谈谈,为什么 Mac 是一个你值得入的坑.而这第篇文章,则是对操作系统的一个简单入门教程,让你跳出 Windows 时代的思维,拥抱全新的 OS X. 这就是 OS X 多年来,OS X 和 Windows 的关系,多多少少就像如今 Android 和 iOS 的关系,Windows

Android使用学习之画图(Canvas,Paint)与手势感应及其应用(乒乓球小游戏)

作为一个没有学习Android的菜鸟,近期一直在工作之外努力地学习的Android的使用. 这周看了下Android的画图.主要是Canvas,Paint等,感觉须要实践下.下午正好有空,就想整一个乒乓球的游戏,算是巩固学的知识. 首先,须要了解下Android的画图须要掌握的经常使用类.包含Canvas,就像一个画板一样,全部的东西都是在其上画的.Paint就是画笔.用其能够画各种基本图形和文字.       Canvas和Paint经常使用的方法就不列举了,这种东西网上到处是.有了这两个东西

手势跟踪论文学习:Realtime and Robust Hand Tracking from Depth

本文介绍的方法主要是用到了深度信息.提出了一种新的手指检测以及手型初始化的方法.具有很好的鲁棒性.在不使用GPU的情况下,速度就可以达到25FPS.准确率还相当的高.可以说是现在手势识别中最好的方法了. 当前的很多方法要不就是很慢,要不就是使用了GPU,再或者就是需要非常复杂的初始化.而本文提出的方法重新定义了手势的模型,结合了现在通用的两种方法的优势,并且加上一个约束方程,得到了很好的效果. 1.模型的重新定义 每一只手,定义了一个自由度(DOF)为26 的手的模型,其中的6个自由度代表全局的

蓝懿IOS学习七大手势Touches

今天学习了ios编程里手势的方法及应用场景,屏幕页面中区分很多控件,有的控件可以有点击事件和用户直接交互,可以执行相应方法,如TextField,Button,UISEgmentControll等,但是静态lableUIImageView等就需要把交互开关打开,添加响应的手势才能实现交互. 刘国斌老师详细的对我们讲了七大手势,包括点击Touches,UIPanGestureRecognizer拖动,UILongPressGestureRecognizer长按手势,UIScreenEdgePanG

我的iOS 学习 - 学习基本手势

iOS设计手势符合人的操作习惯,提供了良好的用户体验. UIGestureRecognizer 手势抽象类,实现类 : UITapGestureRecognizer  轻击 UILongPressGestureRecognizer  长按 UISwipeGestureRecognizer  轻扫 UIPanGestureRecognizer  拖动 UIPinchGestureRecognizer  捏合缩放 UIRotationGestureRecognizer  旋转 下面是示例,简单的创建

我的IOS学习之路(三):手势识别器

在iOS的学习中,对于手势的处理是极为重要的,如对于图片,我们经常需要进行旋转,缩放以及移动等.这里做一下总结,详见代码. 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 UIImage *image = [UIImage imageNamed:@"018.png"]; 5 UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 6 imageView.