通过touches方法监听view触摸事件有以下几个缺点1.必须得自定义view,在自定义的View当中去实现touches方法.2.由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件3.不容易区分用户的具体手势行为(不容易区分是长按手势,还是缩放手势)这些等.iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer在触摸事件处理方面大大简化了开发者的开发难度UIGestureRecognizer手势识别器利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势注意手势有以下几种:UITapGestureRecognizer(敲击)UIPinchGestureRecognizer(捏合,用于缩放)UIPanGestureRecognizer(拖拽)UISwipeGestureRecognizer(轻扫)UIRotationGestureRecognizer(旋转)UILongPressGestureRecognizer(长按)手势使用方法:1.创建手势2.添加手势3.实现手势方法1.添加点按手势创建手势Target:当哪对象要坚听手势action:手势发生时调用的方法UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)];手势也可以设置代理tap.delegate = self;添加手势[self.imageV addGestureRecognizer:tap];以下为手势代理方法:是否允许接收手指.当返回为yes的时候,表示能够接收手指,当为No的时候,表示不能够接收手指,也就是不能够接收事件.-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{获取当前手指所在的点CGPoint curP =  [touch locationInView:self.imageV];if (curP.x > self.imageV.bounds.size.width * 0.5) {在右边,返回NOreturn NO;}else{在左边,返回yes,return YES;}}当手指开始点击时调用-(void)tap{NSLog(@"%s",__func__);}2.添加长按手势UILongPressGestureRecognizer *longP = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];添加手势[self.imageV addGestureRecognizer:longP];当手指长按时调用注意,长按手势会调用多次,当开始长按时会调用,当长按松开时会调用,当长按移动时, 也会调用.一般我们都是在长按刚开始时做事情,所以要判断它的状态.这个状态是保存的当前的手势当中, 所以要把当前的长按手势传进来, 来判断当前手势的状态.- (void)longPress:(UILongPressGestureRecognizer *)longP{手势的状态是一个枚举UIGestureRecognizerState,可以进入头文件当中查看.if (longP.state == UIGestureRecognizerStateBegan) {NSLog(@"开始长按时调用");}else if(longP.state == UIGestureRecognizerStateChanged){会持续调用NSLog(@"当长按拖动时调用");}else if(longP.state == UIGestureRecognizerStateEnded){NSLog(@"当长按松手指松开进调用");}}3.轻扫手势UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];注意:轻扫手势默认轻扫的方向是往右轻扫,可以去手动修改轻扫的方向一个手势只能对象一个方向,想要支持多个方向的轻扫,要添加多个轻扫手势swipe.direction = UISwipeGestureRecognizerDirectionLeft;添加手势[self.imageV addGestureRecognizer:swipe];再添加一个轻扫手势轻扫手势UISwipeGestureRecognizer *swipe2 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];注意:轻扫手势默认轻扫的方向是往右轻扫,可以去手动修改轻扫的方向一个手势只能对象一个方向,想要支持多个方向的轻扫,要添加多个轻扫手势swipe2.direction = UISwipeGestureRecognizerDirectionDown;添加手势[self.imageV addGestureRecognizer:swipe2];

iOS 手势识别(点按、长按、轻扫)相关推荐

  1. iOS 手势的使用 六个手势 轻拍 长按 拖拽 捏合 轻扫 旋转

    手势识别在iOS上非常重要,手势操作移动设备的重要特征,极大的增加了移动设备使用便捷性. iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了UIGestureRecognizer类.手势识 ...

  2. iOS 手势操作:拖动、捏合、旋转、点按、长按、轻扫、自定义

    http://www.cnblogs.com/huangjianwu/p/4675648.html 1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动 ...

  3. IOS开发教程第一季之02UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例

    1.创建并实现手势的基本步骤 点击手势 #import "ViewController.h"@interface ViewController () @property (weak ...

  4. ios 轻扫手势_轻扫即可快速删除iOS计算器中的数字

    ios 轻扫手势 iOS' built-in calculator is a basic, simple-to-use calculator that's very handy for doing s ...

  5. 手势控制:点击、滑动、平移、捏合、旋转、长按、轻扫

    手势识别器(Gesture Recognizer)用于识别触摸序列并触发响应事件.当手势识别器识别到一个手势或手势发生变化时,会触发响应事件.UIGestureRecognizer类作为抽象类,不能直 ...

  6. 如何通过在ViewPager中用手指轻扫来禁用分页,但是仍然能够以编程方式轻扫?

    本文翻译自:How do disable paging by swiping with finger in ViewPager but still be able to swipe programma ...

  7. iOS实现传递不定长的多个参数

    我们在使用苹果官方的文档的时候会发现可传不定数的参数例如: // [[UIAlertView alloc]initWithTitle:<#(nullable NSString *)#> m ...

  8. IOS 为UILabel添加长按复制功能

    IOS 为UILabel添加长按复制功能 在iOS中下面三个控件,自身就有复制-粘贴的功能: 1.UITextView 2.UITextField 3.UIWebView UIKit framewor ...

  9. iOS手势全埋点:轻拍手势、长按手势、捏合手势、旋转手势、轻扫手势、平移手势、屏幕边缘平移手势

    文章目录 前言 I.手势全埋点方案 1.1 轻拍手势全埋点 1.2 长按手势全埋点 II .右划返回的事件与scrollView滚动事件冲突的解决方案 see also 前言 由于UIGestureR ...

  10. iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)

    其余的请见:http://blog.csdn.net/totogo2010/article/details/8615940 1.UIGestureRecognizer介绍 手势识别在iOS上非常重要, ...

最新文章

  1. 图论 ---- CF700 C. Break Up(Tarjan找桥+枚举+思维)
  2. 配置vtk(Win8.1 + VS2012+VTK-5.10.1)
  3. Go 语言并发模型 Context
  4. 100题_22 整数的二进制表示中1的个数
  5. 用java写注册表单_利用HTML表单标签编写一个注册页面
  6. Django(1.7 part1)
  7. hashmap value为null_从这五个方面看hashmap,新手一遍就能懂
  8. 一个简单的中文自动转拼音
  9. 路径的形式不合法解决方案
  10. Vue——B站黑马程序员教程
  11. WebView加载淘宝,天猫链接失败
  12. 东南大学计算机技术935专业考研经验分享
  13. 如何将图片做成二维码并加入文字?二维码文字内容的排版怎么做?
  14. nginx的http_rewrite模块的rewrite指令
  15. SQL必知必会挑战题答案
  16. Cesium淹没分析(干货)
  17. Python:将Flask测试应用部署到Deta
  18. 食品保质期提醒应用 android,保质期提醒app
  19. python泰坦尼克号案例分析课程设计_《泰坦尼克号》教学案例
  20. 【编程学习】每天进步一点点,编程学习之路:一款表格数据处理软件 - CSV表格数据处理器v1.0.1

热门文章

  1. win10激活方法 电脑病毒和防威胁按键是灰色的,密钥无效的,无法激活的时候怎么强制激活电脑系统
  2. 5000字超干货,新中国成立70年人口流动迁移的特征与趋势可视化!
  3. 李子奈《计量经济学》第四版笔记和课后答案
  4. java 万年历接口
  5. 中国光伏如何规避产业风险?
  6. VBScript 程序员参考手册 读书笔记08-
  7. Adobe Flash Player32 离线安装包及菁苗软件打开白屏的解决方法
  8. win7 开启梦幻桌面
  9. 数分统计学基础知识框架。
  10. 微信打电话和直接打电话有什么区别吗?为什么?