UIGestureRecognizer是处理手势的一个抽象类,可以使用系统定义的手势或者自定义手势识别,是响应触摸事件的三大方式之一。

UIGestureRecognizer常用子类

点击手势:UITapGestureRecognizer

捏合手势:UIPinchGestureRecognizer

旋转手势:UIRotationGestureRecognizer

轻扫手势:UISwipeGestureRecognizer

拖动手势:UIPanGestureRecognizer

边缘侧滑:UIScreenEdgePanGestureRecognizer

长按手势:UILongPressGestureRecognizer

点击手势(Tap)应该是我们最常用的手势。

除了可以使用系统定义的手势,也可以子类化实现自己的手势,比如官网自定义手势

UIGestureRecognizer创建

  1. 创建一个Target对象,事件响应对象,比如某个View;
  2. 实例化手势对象。使用-initWithTarget:action:方法进行对象初始化和响应绑定,设置当手势事件发生时,调用的方法;
  3. 为响应对象添加手势,使用addGestureRecognizer:方法;
  4. 实现手势事件发生时所调用的方法,及selector,事件函数单独定义。

UIGestureRecognizer常用属性和方法

初始化方法

public init(target: AnyObject?, action: Selector)初始化手势对象,并设置手势发生时调用的方法

获取手势点击的位置

public func locationOfTouch(touchIndex: Int, inView view:UIView?) -> CGPoint // 获取手势点击的位置;

手势点击的状态

public static var Recognized: UIGestureRecognizerState{ get }

UIGestureRecognizerState枚举值为:

  • Possible:可能手势事件
  • Began:开始手势事件
  • Ended:结束手势事件
  • Changed:手势位置发生变化
  • Failed:无法识别的手势
  • Cancelled:取消手势事件(事件响应会发送)

手势类型

1. 离散型手势(tap、swipe)

  • 识别成功:possible ->  recognized
  • 识别失败:possible -> failed

2. 持续型手势(除了tap、swipe)

  • 完整识别:Possible -> Began -> [Changed] -> End
  • 失败识别:Possible -> Began -> [Changed] -> Cancelled

参考文档

UIGestureRecognizer官网介绍

iOS触摸事件全家桶:理解手势冲突神文章。

UIGestureRecognizer手势介绍相关推荐

  1. UIGestureRecognizer手势

    UIGestureRecognizer手势 目录 1.什么是手势以及手势的种类 2.手势的添加及常用属性 3.多种手势并用 1.什么是手势以及手势的种类 UIKit中包含了UIGestureRecog ...

  2. ios 监听一个控制器的属性_iOS 事件(UITouch、UIControl、UIGestureRecognizer)传递机制

    gitHub地址 : 响应链Demo 文章有点长,如果只是想了解大概过程的,可以直接看后面的总结 一.触摸.事件.响应者 1. UITouch源起触摸一个手指一次触摸屏幕,就对应生成一个UITouch ...

  3. iOS —— 触摸事件传递及响应与手势

    iOS 的事件分为三种,触摸事件(Touch Event).加速器事件(Motion Events).远程遥控事件(Remote Events).这些事件对应的类为UIResponder.本文只探究触 ...

  4. 手势(Gesture)

    一.Android提供的两种手势:①Android提供了手势检测,并为手势提供了相应的监听器       ②Android允许开发者添加手势,并提供了相应的API识别用户手势 二.手势检测:手势检测器 ...

  5. Flutter中的点击、拖动和其它手势

    Flutter中的点击.拖动和其它手势 介绍 Pointers 手势 手势消歧 介绍 本文档介绍了如何在Flutter中监听并响应手势(点击.拖动和缩放). Flutter中的手势系统有两个独立的层. ...

  6. UI之摇晃手机和触摸手势

    摇晃手机 -(void)motionBegan:(UIEventSubtype)motionwithEvent:(UIEvent *)event//摇晃触发.[UIViewanimateWithDur ...

  7. Swift 探索 UICollectionView 之 SupplementaryView 和 Decoration View

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 HelloWorld杰少 即可关注. 写在开头 大家早上好,又到了每周和大家分享开发心得的时间啦!上周我分享了一篇关于 UIColle ...

  8. IOS学习路线(2014-05-08)

    2019独角兽企业重金招聘Python工程师标准>>> 黑马最新IOS就业班(14年7月-12月份)培训视频教程 第一阶段:UI基础(17天) 计算器案例 介绍类前缀.简单介绍新建工 ...

  9. Android开发——用户在屏幕上的手势识别

    0. 前言   转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52462493 Android开发中,我们常常需要获取用户的手势操作事 ...

最新文章

  1. [LeetCode]题解(python):108-Convert Sorted Array to Binary Search Tree
  2. 【总结整理】JQuery基础学习---DOM篇
  3. 如何更规范化编写 Java 代码
  4. SAP Fiori Launchpad Tile点击后跳转的调试技巧
  5. YznCMS 后台开发框架
  6. 学成在线首页——静态页面基础项目(HTML+CSS)【学习笔记】
  7. 【C++算法基础】快速排序以及边界问题
  8. oppo android root工具箱,oppo R11(全网通 安卓8.1)手机完美获取root教程,最强root工具,亲测可用!...
  9. Linux安装JDK-8-附有百度网盘链接
  10. 【65】如何通过sys文件系统remove和probe一个PCI设备
  11. 伺服舵机四方运动程序以及角度确定
  12. 统计学基础(四)—卡方检验怎么用?
  13. SQL SEVER登录失败,无法连接服务器或已成功与服务器建立连接,但是在登录过程中发生错误。(Win10版本,SQL 2019)
  14. word不能保存, 不能另存, 保存按钮 另存菜单不可用 的解决方法
  15. crmeb多商户系统安装(1)
  16. 《北风那个吹》大结局看完了
  17. 批量修改文件名 大量文件名称一键替换文字
  18. python练习题:输入某年某月某日,判断这一天是这一年的第几天?
  19. python建立分析模型_《利用Python进行数据分析》13.2 使用Patsy创建模型描述
  20. linux mint桌面mac,清新的Linux Mint 桌面壁纸 1920 x 1200

热门文章

  1. 二十五:设计模式的总结
  2. codewars068 - Convert string to camel case
  3. nfs自动挂载报错及解决方法
  4. System Center Virtual Machine Manager 2012 SP1系列文章
  5. 京东商城Android版客户端 安装到手机上就能轻松购物
  6. Exchange 2007 内存使用问题
  7. TBluetoothLE.OnDisconnectDevice
  8. 【转】WINDOWS消息响应,以及处理分派机制
  9. 10款人气暴涨的PHP开源工具
  10. 最新zendframework1.11使用