当前位置: 首页 > news >正文

UIGestureRecognizer 各个子类以及其作用

在 iOS 里,UIGestureRecognizer 是一个抽象基类,专门用来处理手势事件。它本身不能直接用,必须用它的 子类。这些子类分别对应常见的手势识别器。


常见的 UIGestureRecognizer 子类及作用

1. UITapGestureRecognizer

  • 作用:点击手势(单击 / 双击)。

  • 典型场景:点击按钮外区域关闭键盘、图片点击放大。

  • 参数:可以设置 numberOfTapsRequired(点击次数)、numberOfTouchesRequired(手指数)。

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    tap.numberOfTapsRequired = 2; // 双击
    tap.numberOfTouchesRequired = 1; // 单指
    [view addGestureRecognizer:tap];
    

2. UILongPressGestureRecognizer

  • 作用:长按手势。

  • 典型场景:微信长按消息弹出菜单、长按图片保存。

  • 参数minimumPressDuration(按压时间,默认 0.5 秒),allowableMovement(手指允许移动的范围)。

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
    longPress.minimumPressDuration = 0.8;
    [view addGestureRecognizer:longPress];
    

3. UIPanGestureRecognizer

  • 作用:拖拽手势(连续)。

  • 典型场景:拖拽视图移动,滑动解锁。

  • 方法translationInView: 获取手指相对位置,velocityInView: 获取速度。

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [view addGestureRecognizer:pan];
    

4. UISwipeGestureRecognizer

  • 作用:轻扫手势(单次)。

  • 典型场景:左右滑动切换页面。

  • 参数direction(方向,可组合:UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)。

    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
    swipe.direction = UISwipeGestureRecognizerDirectionLeft;
    [view addGestureRecognizer:swipe];
    

5. UIPinchGestureRecognizer

  • 作用:捏合手势(双指缩放)。

  • 典型场景:图片缩放、地图缩放。

  • 方法scale(缩放倍数),可结合 view.transform

    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];
    [view addGestureRecognizer:pinch];
    

6. UIRotationGestureRecognizer

  • 作用:旋转手势(双指旋转)。

  • 典型场景:图片旋转。

  • 方法rotation(旋转角度,弧度制)。

    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotation:)];
    [view addGestureRecognizer:rotation];
    

总结对比

子类作用常用场景
UITapGestureRecognizer单击 / 双击点背景关闭键盘、点击放大
UILongPressGestureRecognizer长按弹出菜单、保存图片
UIPanGestureRecognizer拖拽拖动视图、滑动解锁
UISwipeGestureRecognizer轻扫翻页、滑动删除
UIPinchGestureRecognizer捏合缩放图片/地图缩放
UIRotationGestureRecognizer旋转图片旋转

额外说明:

  • 手势冲突处理:可以用 gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 来允许多个手势并存。

  • UIGestureRecognizer 基类:也提供了手势状态(began / changed / ended / cancelled),子类里都能用。

http://www.dtcms.com/a/340511.html

相关文章:

  • iOS开发之UICollectionView为什么需要配合UICollectionViewFlowLayout使用
  • 氯化钇:科技与高性能材料的核心元素
  • C++高频知识点(三十)
  • 嵌入式音频开发(3)- AudioService核心功能
  • 机器学习数学基础与商业实践指南:从统计显著性到预测能力的认知升级
  • Node.js中的Prisma应用:现代数据库开发的最佳实践
  • 河南萌新联赛2025第六场 - 郑州大学
  • Java:将视频上传到腾讯云并通过腾讯云点播播放
  • 【Task02】:四步构建简单rag(第一章3节)
  • 第三阶段数据-4:SqlHelper类,数据库删除,DataTable创建
  • 【考研408数据结构-08】 图论基础:存储结构与遍历算法
  • Opencv模板匹配
  • 27.语言模型
  • Java + 工业物联网 / 智慧楼宇 面试问答模板
  • C#APP.Config配置文件解析
  • 案例分享:BRAV-7123助力家用型人形机器人,智能生活未来已来
  • 项目各功能介绍
  • 今天我们学习计算机网络技术的虚拟局域网VLAN以及了解三层交换机的概念
  • 应用在运行时,向用户索取(相机、存储)等权限,未同步告知权限申请的使用目的,不符合相关法律法规要求--教你如何解决华为市场上架难题
  • leetcode 1277. 统计全为 1 的正方形子矩阵 中等
  • (nice!!!)(LeetCode 每日一题) 1277. 统计全为 1 的正方形子矩阵 (动态规划)
  • Tumblr长文运营:亚矩阵云手机助力多账号轮询与关键词布局系统
  • 亚矩阵:跨境卖家 YouTube 私域矩阵搭建的高效解决方案
  • JavaScript 性能优化实战:从原理到落地的完整指南
  • AI硬件 - 华为显卡的演进
  • 深入理解MySQL Ⅳ -- SQL性能分析工具
  • 力扣48:旋转矩阵
  • [TryHackMe]Mr Robot CTF(hydra爆破+Wordpress更改主题)
  • IPSec安全概述
  • 医疗AI与医院数据仓库的智能化升级:异构采集、精准评估与高效交互的融合方向(上)