转自http://blog.csdn.net/likendsl/article/details/7554150 这哥们很厉害的
一、概述
iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
但是这种方式甄别不同的手势操作实在是麻烦,需要你自己计算做不同的手势分辨。后来。。。
苹果就给出了一个比较简便的方式,就是使用UIGestureRecognizer。
二、UIGestureRecognizer
UIGestureRecognizer基类
是一个抽象类,我们主要是使用它的子类(名字包含链接,可以点击跳到ios Developer library,看官方文档):
从名字上我们就能知道,
Tap(点击)、Pinch(捏合)、Rotation(旋转)、Swipe(滑动,快速移动,是用于监测滑动的方向的)、Pan (拖移,慢速移动,是用于监测偏移的量的)以及 LongPress(长按)。
举个例子,可以在viewDidLoad函数里面添加:
- -(void) viewDidLoad
- {
- [super viewDidLoad];
-
- UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)];
- [self.view addGestureRecognizer:panRecognizer];
- panRecognizer.maximumNumberOfTouches = 1;
- panRecognizer.delegate = self;
- [panRecognizer release];
- }
其它手势方法类似。
其核心就是设置delegate和在需要手势监测的view上使用addGestureRecognizer添加指定的手势监测。
当然要记得在作为delegate的view的头文件加上<UIGestureRecognizerDelegate>。
不过有些手势是关联的,怎么办呢?例如 Tap 与 LongPress、Swipe与 Pan,或是 Tap 一次与Tap 兩次。
手势识别是具有互斥的原则的,比如单击和双击,如果它识别出一种手势,其后的手势将不被识别。所以对于关联手势,要做特殊处理以帮助程序甄别,应该把当前手势归结到哪一类手势里面。
比如,单击和双击并存时,如果不做处理,它就只能发送出单击的消息。为了能够识别出双击手势,就需要做一个特殊处理逻辑,即先判断手势是否是双击,在双击失效的情况下作为单击手势处理。使用
[A requireGestureRecognizerToFail:B]函数,它可以指定当A手势发生时,即便A已经滿足条件了,也不会立刻触发,会等到指定的手势B确定失败之后才触发。
- - (void)viewDidLoad
- {
-
- UITapGestureRecognizer* singleRecognizer;
- singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(SingleTap:)];
-
- singleTapRecognizer.numberOfTapsRequired = 1;
-
-
-
- [self.view addGestureRecognizer:singleRecognizer];
-
-
-
- UITapGestureRecognizer* double;
- doubleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(DoubleTap:)];
- doubleTapRecognizer.numberOfTapsRequired = 2;
-
- [self.view addGestureRecognizer:doubleRecognizer];
-
-
- [singleRecognizer requireGestureRecognizerToFail:doubleRecognizer];
- [singleRecognizer release];
- [doubleRecognizer release];
- }
-
- -(void)SingleTap:(UITapGestureRecognizer*)recognizer
- {
-
- }
-
- -(void)DoubleTap:(UITapGestureRecognizer*)recognizer
- {
-
- }
三、iphone操作手势的大概种类
1.点击(Tap)
点击作为最常用手势,用于按下或选择一个控件或条目(类似于普通的鼠标点击)、
2.拖动(Drag)
拖动用于实现一些页面的滚动,以及对控件的移动功能。
3.滑动(Flick)
滑动用于实现页面的快速滚动和翻页的功能。
4.横扫(Swipe)
横扫手势用于激活列表项的快捷操作菜单
5.双击(Double Tap)
双击放大并居中显示图片,或恢复原大小(如果当前已经放大)。同时,双击能够激活针对文字编辑菜单。
6.放大(Pinch open)
放大手势可以实现以下功能:打开订阅源,打开文章的详情。在照片查看的时候,放大手势也可实现放大图片的功能。
7.缩小(Pinch close)
缩小手势,可以实现与放大手势相反且对应的功能的功能:关闭订阅源退出到首页,关闭文章退出至索引页。在照片查看的时候,缩小手势也可实现缩小图片的功能。
8.长按(Touch &Hold)
在我的订阅页,长按订阅源将自动进入编辑模式,同时选中手指当前按下的订阅源。这时可直接拖动订阅源移动位置。
针对文字长按,将出现放大镜辅助功能。松开后,则出现编辑菜单。
针对图片长按,将出现编辑菜单。
9.摇晃(Shake)
摇晃手势,将出现撤销与重做菜单。主要是针对用户文本输入的。
分享到:
相关推荐
IOS各种手势代码,详细地描述了各种手势及其代码
本资源“ios各种手势使用集合总结”为初学者提供了一个良好的学习平台,帮助他们快速掌握iOS手势的运用。下面我们将详细探讨其中涉及的关键知识点。 1. **轻扫(Swipe Gestures)** - **UIPanGestureRecognizer**...
在Android应用开发中,iOS系统的用户体验和界面设计一直备受开发者和用户的青睐,尤其是其独特的手势交互方式。"仿iOS界面手势切换"是一个Android项目,它实现了类似于iOS中的侧滑返回功能,让Android用户也能享受到...
【iOS手势解锁实现详解】 iOS手势解锁是一种便捷的用户身份验证方式,它允许用户通过在屏幕上画出特定的图案来解锁设备或执行某些操作。这种功能常见于许多智能手机和平板电脑,提供了直观且个性化的安全保护。在...
在iOS开发中,手势识别(Gesture Recognizers)和触摸事件(Touch Events)是构建用户交互界面不可或缺的部分。这些技术使得应用程序能够对用户的屏幕操作做出响应,从而提供更加自然和直观的用户体验。本教程将深入...
在iOS应用开发中,手势交互是提升用户体验的关键因素之一,特别是在构建主流APP结构时。"ios拖动手势展开菜单栏"这一主题,涉及到的核心知识点主要包括iOS的手势识别、APP界面设计以及侧滑菜单的实现。 首先,我们...
3. **手势识别(Gesture Recognizers)**:iOS提供了一系列内置的手势识别器,如UIPanGestureRecognizer,它能捕捉用户的滑动手势。开发者会为视图添加这个手势识别器,并监听其变化以获取手势路径。 4. **...
在iOS应用开发中,手势交互是提升用户体验的关键因素之一,特别是在构建导航流程时。"ios-手势借助导航栏可以切换viewController.zip"这个压缩包文件,显然包含了一个实现通过手势在导航栏侧滑来切换ViewController...
6. **PopVC示例**:在提供的"PopVC"文件中,很可能包含了一个具体的视图控制器类,它展示了如何在初始化或加载视图时执行以上步骤,将系统返回手势拦截并替换为自定义的全屏滑动手势。 通过这种方法,你可以在保持...
在iOS开发中,手势解锁是一种常见的用户验证方式,它提供了便捷的安全...这对手势解锁的实现以及数据管理的理解都将有所帮助,特别是对于那些希望在自己的应用中加入类似功能的开发者来说,这是一个很好的实践案例。
在iOS开发中,手势密码解锁...这个小demo是一个很好的学习资源,可以帮助开发者深入理解手势交互、图形绘制以及数据持久化在实际项目中的应用。通过分析和实践这个示例,开发者可以更好地掌握iOS开发中的一些核心技巧。
在iOS开发中,手势交互是用户体验的重要组成部分,特别是在移动设备上。`ios-长按手势自定义复制功能.zip`这个压缩包文件显然包含了关于如何在iOS应用中实现长按手势以提供复制功能的相关代码示例。我们将深入探讨这...
在iOS开发中,手势识别(Gesture Recognizers)是构建用户交互界面的重要...总之,理解并熟练使用iOS中的各种手势识别器对于提升应用的用户体验至关重要。正确地实现和组合这些手势,可以使你的应用更加直观、易用。
基于手势操作的UITableView,实现cell左右滑动,点击cell扩展等效果。划动列表cell的动作有挺不错的bounce(弹性)效果。 编译测试,适用环境:Xcode 4.5, iOS 5.0 以上。
iOS中各种手势的详细用法,包括冲突手势的区分
界面很挫,大神勿喷啊
在iOS开发中,手势识别(Gesture Recognizer)是用户与应用程序交互的重要手段,它使得用户可以通过简单的触摸或滑动手势来触发特定的操作。本项目"iOS自定义手势demo"聚焦于自定义手势识别器的实现,提供了四种特殊...
IOS中手势操作一般是 UIGestureRecognizer 类的几个手势子类去实现,一般我们用到的手势就这么5种: 1、点击 UITapGestureRecognizer 2、平移 UIPanGestureRecognizer 3、缩放 UIPinchGestureRecognizer 4、旋转...
在iOS系统中,手势锁屏是一种增强用户隐私和设备安全性的功能。手势锁屏允许用户通过自定义的手势路径来解锁设备,而不仅仅是传统的数字密码或图案解锁。这个功能不仅提高了设备的个性化程度,同时也增加了破解锁屏...
在iOS平台上,手势是用户与设备交互的重要方式,它们提供了直观、自然的界面操作体验。以下是对iOS中主要手势的详细解析: 1. **轻拍(Tap)**: 轻拍是最基本的手势,通常用于选择或激活某个元素。用户只需短暂地...