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.pswp.cn/news/919527.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 HTTPS 全流程

HTTPS 通信的全流程(特别是 TLS 握手阶段)中使用的三个随机数是保障安全性的核心设计,不能随意减少。每个随机数都承担着至关重要的安全职责。下面详细解释 HTTPS 全流程,并重点分析这三个随机数的作用和必要性:&#…

DL00271-基于YOLOv11的激光雷达LiDAR船舶目标检测含完整数据集

【CSDN推荐】基于YOLOv11的激光雷达(LiDAR)船舶目标检测——含完整数据集!🚢 科研人员必看! 高校老师、学生和研究者们,前沿技术来了!本论文利用YOLOv11模型,结合激光雷达&#xff0…

SQL-leetcode—3374. 首字母大写 II

3374. 首字母大写 II 表:user_content -------------------- | Column Name | Type | -------------------- | content_id | int | | content_text| varchar | -------------------- content_id 是这张表的唯一主键。 每一行包含一个不同的 ID 以及对应的文…

告别笼统的 200 OK:一份给 API 设计者的 HTTP 状态码终极指南

文章目录写在前面问题描述核心结论与建议简要描述详细阐述1xx - 信息性响应 (Informational)2xx - 成功 (Successful)3xx - 重定向 (Redirection)4xx - 客户端错误 (Client Error)5xx - 服务器错误 (Server Error)HTTP 状态码速查表参考以及更多更详细的状态码查询写在前面 你…

从防抖节流到链表树:编程世界中的抽象优化艺术

从防抖节流到链表树:编程世界中的抽象优化艺术 在编程的知识体系中,有些概念看似毫不相关,却在底层逻辑上有着惊人的相似之处。防抖与节流、链表与树,这两组分属不同领域的概念,正是这种思维共性的典型代表。它们不仅展…

第三阶段数据-3:数据库脚本生成,备份与还原,分离与附加

1_生成数据库脚本(1)在数据库上右键选择任务(2)选择生成脚本(3)选择下一步,如果下次不想显示此页面,可勾选不再显示此页(4)如果导出全部数据,选择…

React框架超详细入门到实战项目演练【前端】【React】

React框架 1.前端展示解释 当客户端访问服务器时,会从服务器中下载很多静态文件到本地,比如css、js等前端渲染文件 下载完成之后浏览器会将这些文件组合形成前端页面渲染出来。 2.React概述 React是一个专注于构建用户界面的JavaScript库,…

本地部署的终极多面手:Qwen2.5-Omni-3B,视频剪、音频混、图像生、文本写全搞定

Qwen2.5-Omni-3B是什么? Qwen2.5-Omni-3B 是由阿里巴巴 Qwen 团队推出的一款轻量级多模态大模型,作为 Qwen2.5-Omni-7B 的高效优化版本,专为消费级硬件环境量身打造。该模型具备处理文本、音频、图像和视频等多种模态输入的能力,…

连续空间强化学习:策略输出的两种形态 —— 概率分布与确定性动作

在强化学习的世界里,智能体与环境的交互核心是 “动作选择”。当面对离散动作空间(如围棋的落子点、游戏的按键操作)时,智能体可以直接枚举或概率选择有限的动作;但在连续动作空间中(如机器人关节角度、无人…

IT运维背锅权限泄露?集中式管控如何化解风险?

在企业数字化转型的浪潮中,IT运维团队常常被推到风口浪尖。员工离职后权限未及时回收、账号共享导致数据泄露、跨系统权限配置不一致……这些问题一旦暴露,IT运维往往成为“背锅侠”。权限泄露不仅威胁企业数据安全,还可能导致合规性风险&…

2025 世界机器人大会启示录:机构学 × AI × 视频链路的融合之路

引言 2025 年 8 月 8 日,北京再一次成为全球瞩目的科技焦点——世界机器人大会盛大开幕。来自全球的 200 余家顶尖企业齐聚一堂,带来超过 1500 件展品,其中首发新品突破 100 款,涵盖了从工业制造、医疗康复到服务陪伴、特种作业的…

从零开始部署经典开源项目管理系统最新版redmine6-Linux Debian12

安装Debian 12 前面为了在windows上好开发,想要在windows上配置开发环境,以源码方式在本地部署运行,但经过好几天各种版本切换及配置组件库等各种操作后,证明windows上搭建redmine6支持的运行环境没有那么简单,后续有…

超长视频生成新突破!LongVie框架问世,创作不再受时长限制

超长视频生成新突破!LongVie框架问世,创作不再受时长限制 文章来源:Poixe AI 在AI技术飞速发展的当下,视频生成领域取得了令人瞩目的进步,尤其是在短视频创作方面。然而,当视频时长超过一分钟时&#xff…

MongoDB 查询方法与高级查询表(Python版)

目录 一、MongoDB3步快速安装 1.1​下载安装包 1.2运行安装程序​ 1.3​验证安装​打开CMD执行: 1.4 基本查询操作 二、高级查询操作符表 2.1 比较操作符 2.2 逻辑操作符 2.3 元素操作符 2.4 数组操作符 三、高级查询案例 3.1 复杂条件组合 3.2 数组查…

选型指南:如何为企业挑选合适的边缘计算网关

选型指南:如何为企业挑选合适的边缘计算网关在企业迈向智能化转型的道路上,选择一款合适的物联网边缘计算网关至关重要。面对众多型号和功能各异的网关产品,企业该如何做出正确抉择呢?​首先要考虑的是网关的兼容性。蓝蜂物联网边…

HT8693 音频功率放大器:赋能优质音频体验的核心之选

在音频设备快速迭代的当下,用户对音质表现、设备稳定性和场景适应性的需求日益提升,一款性能卓越的音频功率放大器成为连接音源与听觉享受的关键桥梁。HT8693 凭借双模式切换、强劲输出、智能保护等核心优势,为各类音频设备提供了可靠的性能支…

python+flask后端开发~项目实战 | 博客问答项目--模块化文件架构的基础搭建

项目功能概述: 首页(公开博客显示)博客发布与查询用户登录与注册底层MySQL数据库的动态响应与支持 简介:Flask作为Python的一个轻量级Web框架,以其灵活性和可扩展性,赢得了众多开发者的青睐。从本文开始,你将从0开始…

精品方案 | GCKontrol与OMNeT++联合仿真在机载网络性能分析中的应用

概述本文基于GCKontrol搭建了飞行仿真模型,并基于OMNeT搭建了机内网络系统,实现了不同专业、不同平台的模型集成与调试。通过这种联合仿真架构,能够模拟飞机在不同飞行状态下的网络性能,极大提高了性能评估的精度和可靠性。这不仅…

阶跃星辰 StepFun 入驻 GitCode 平台,带来工业级 AI 体验

在 2025 年的 AI 产业应用实践中,开发者面临三重核心挑战:​⚠️上下文窗口局限​:主流 AI 模型普遍受限于 4K-32K 的上下文长度,导致技术方案文档需被强制拆分处理,破坏架构设计的连贯性。 ​⚠️跨行业文档识别缺陷​…

亚马逊新品爆单策略:从传统困境到智能突破

新品上架,是每个亚马逊卖家最期待又最煎熬的阶段。我至今记得一款新品上线后的第一周:每天看着广告费像流水一样烧掉,单量却迟迟不见起色。后台的ACOS一路飙升,几天时间,我的预算已经消耗了一大半。那种“钱花了&#…