View的触摸事件处理

Android触摸滑动全解(一)——View中触摸事件详解 Android触摸滑动全解(一)——View中触摸事件详解 View触摸事件概述 View中的触摸事件可以分为两个部分。 dispatchTouchEvent()和onTouchEvent()这两个方法,其中,dispatchTouchEvent()是用来传递触摸事件(返回true表示消费此次触摸事件,返回false表示不消费此次触摸事件);onTouchEvent用来处理触摸事件。 ... 阅读详情


1.UIResponder概念

a.在用户使用app过程中,会产生各种各样的事件,iOS中的事件可以分为3大类型:触摸事件、加速事件、远程控制事件。今天主要介绍触摸事件。

b.在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件,我们称之为“响应者对象”。

c.UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件。

d.UIResponder内部提供了以下方法来处理事件。

触摸事件

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event;

-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event;

-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event;

-(void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent *)event;

加速计事件

-(void)motionBegan:(UIEventSubtype)motionwithEvent:(UIEvent *)event;

-(void)motionEnded:(UIEventSubtype)motionwithEvent:(UIEvent *)event;

-(void)motionCancelled:(UIEventSubtype)motionwithEvent:(UIEvent *)event;

远程控制事件

-(void)remoteControlReceivedWithEvent:(UIEvent*)event;

 

2.UIView的触摸事件

UIView是UIResponder的子类,可以覆盖下列4个方法处理不同的触摸事件

//一根或者多根手指开始触摸view,系统会自动调用view的下面方法

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event

//一根或者多根手指在view上移动,系统会自动调用view的下面方法(随着手指的移动,会持续调用该方法)

-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event

//一根或者多根手指离开view,系统会自动调用view的下面方法

-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event

//触摸结束前,某个系统事件(例如电话呼入)会打断触摸过程,系统会自动调用view的下面方法

-(void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent *)event

提示:touches中存放的都是UITouch对象

 

3.NSSet与NSArray的区别:

NSSet:

1>无序的、不重复的;

2>通过 anyObject 来访问单个元素;

3>主要通过forin遍历;

4>好处: 效率高。

5>应用场景: 

*比如重用 Cell 的时候, 从缓存池中随便获取一个就可以了, 无需按照指定顺序来获取

*当需要把数据存放到一个集合中, 然后判断集合中是否有某个对象的时候

 

NSArray

1>  有序的、可以有重复对象,对象的顺序是按照添加的顺序来保存的;

2>  通过下标来访问单个元素;

3>  可以通过for循环和forin来遍历;

4>好处: 有序访问。

4>  应用场景: 

在绝大多数需要依赖顺序的情况下(比如 tableView 的数据源集合,在实际操作中要根据下标来获取对象)

 

4.补充:

a.可以通过按着option键和鼠标点击实现两点触摸屏幕;

b.UIView默认不支持多点触控multipleTouchEnabled,可在view的属性中打钩;

c.UIImageView默认不支持多点触控multipleTouchEnabled,也不支持userInteractionEnabled可在view的属性中打钩;

 


多层View如何响应touch事件 这里,讲一下多层view响应touch事件,也可以看看dispatchKeyEvent、onInterceptTouchEvent和onTouchEvent三者之间执行的顺序。 我们分成三层进行测试 top层:最顶层 mid层:中间层 bottom层:底层 三个控件都是有拖动条的,方便进行试验 自定义ScrollView控件,和ListView控件 并将 dispatchKe 阅读详情

相关推荐

Android-高级-UI-进阶之路-(二)-深入理解-Android-8-0-View-触摸事件分发机制

如果遍历所有的子元素后事件都没有被处理的时候,那么 ViewGroup 就会自己处理点击事件,这里包含 2 种情况下 ViewGroup 会自己处理事件 (其一: ViewGroup 没有子元素,其二:子元素处理了点击事件,但是在 dispatchTouchEvent 中返回了false,这一般是在子元素的 onTouchEvent 中返回了 false ) 代码如下: public boolean dispatchTouchEvent(MotionEvent ev) { … if (mFirstTouch

m0_66155658的博客 233

Android View 事件分发机制,看这一篇就够了

对于屏幕的点击,滑动,抬起等一系的动作,其实都是由一个一个MotionEvent对象组成的。ACTION_DOWN:手指刚接触屏幕,按下去的那一瞬间产生该事件ACTION_MOVE:手指在屏幕上移动时候产生该事件ACTION_UP:手指从屏幕上松开的瞬间产生该事件ACTION_CANCEL 当前 View 的手势被打断,后续不会再收到任何事件从 ACTION_DOWN 开始到 ACTION_UP/ACTION_CANCEL 结束我们称为一个事件序列。

程序员徐师兄的博客 684

Android View触摸事件处理:点击、长按与左右滑动

在Android开发中,触摸事件主要通过或来处理。事件是用户触摸屏幕的第一个事件,它标记了触摸序列的开始;而ACTION_UP事件则标志着触摸序列的结束。理解这两个事件之间的关系是正确处理滑动事件的关键。在自定义View中重写时,需要重写整个方法并根据传入的参数判断事件类型,然后进行相应的处理。以下是一个简单的示例:@Override// 处理按下的动作// 处理移动的动作// 处理抬起的动作在上述代码中,我们首先获取了事件的类型,并通过。

weixin_35732273的博客 929

Android-View 点击&触摸事件优先级

一直很好奇,View 点击&触摸事件它们触发的优先级是怎么样,哪个先执行,哪个后执行,返回只true、false对后续执行有什么影响呢?主要分析onClick,onLongClick,onTouch,onTouchEvent这4个函数,有兴趣的可以一起往下看。源码分析基于Android-23都是可以监听Touch事件,区别在于,前者是通过setOnTouchListener进行注册,后者只要重写即可; 2. onClick 监听点击事件; 3. onLongClick 监听长按事件。 注释1:当设置了se

大模型训练 1751

Ubuntu单系统安装全攻略:从删除Windows到UEFI引导设置(避坑指南)

本文提供Ubuntu单系统安装的完整指南,涵盖从安全删除Windows系统到UEFI引导设置的详细步骤。通过专业工具准备、分区方案设计、引导加载器配置等关键环节,帮助用户避免常见安装问题,实现纯净高效的Ubuntu单系统环境。特别强调UEFI引导的深度配置与安装后的性能优化,适合希望彻底转向Linux的用户。

weixin_29210727的博客 409

Excel插件开发实战:从零封装一个带自定义Ribbon的.xlam工具包

本文详细介绍了如何从零开发一个带自定义Ribbon的Excel插件.xlam工具包。通过VBA和XML技术,读者将学习到插件架构设计、Ribbon界面定制、模块化开发以及企业级部署策略,帮助提升Excel自动化办公效率。

weixin_42531128的博客 516

View 触摸机制(事件分发)

主要由三个重要的方法共同完成的,只有ViewGroup有拦截方法。View事件方法执行顺序:onTouchListener > onTouchEvent > onLongClickListener > onClickListener。传递过程:Activity->Window->PhoneWindow->DecorView->RootView->ViewGroup->View。Input事件:触摸事件(Down、Up、Move);Key 事件(Home Key 、 Back Key)

Android 1191

数据结构实验1 集合的交、并、差

姓名:Far_Rainbow 学号: 202505000X 专业: 软件工程 年级:2020级 实验名称:实验1 集合的交、并、差 实验内容: (1)实验目的 通过该实验,让学生复习巩固C语言中的循环结构、循环控制条件、分支结构和数组/链表、函数的调用等有关内容,体会到用数组存储集合时,需要记录集合元素的个数,否则输出结果会出现数据越界现象。 (2)实验内容 通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交、并、差。 (3)实验要求 从程序完善性上考虑,集合元

Far_Rainbow的博客 2177

Android View

View基础知识 View的位置参数: MotionEvent和TouchSlop VelocityTracker GestureDetector View的滑动 scrollTo和scrollBy 使用动画 改变布局参数 Scroller View基础知识 View的位置参数: top、left、right、bottom,分别对应View的左上角和右下...

专栏 432

opencv实践项目-图片拼接之缝合线算法

opencv 图片缝合线算法

wyw0000的博客 2624

harbor x509: certificate signed by unknown authority【20251222】

本教程通过「合并证书链(服务器端)+ 预置根 CA(客户端)」彻底解决了自签名证书的 x509 错误,同时集成了 Trivy 漏洞扫描,实现了 Harbor 从搭建到实用的全流程。证书链合并是服务器端的关键,确保客户端获取完整信任路径;客户端需同时配置「系统信任库 + Docker 信任目录」,避免 Docker 独立信任机制导致的问题;所有 IP 需保持一致(Harbor 配置、证书绑定、客户端访问),是避免错误的基础。

老韩的Linux云计算架构师进阶之路 681

【Android View】Android中View对触摸事件的处理和传递dispatchTouchEvent、onInterceptTouchEvent

View中存在dispatchTouchEvent、onTouchEvent两个方法。 而ViewGroup中则存在dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent三个方法。 调用顺序依次为dispatchTouchEvent——》onInterceptTouchEvent——》onTouchEvent 在Android的View层级

奋学者|林静的学习车间 3231

基于Abaqus的横向各向同性线弹性理想塑性材料模型的umat子程序实现——以Fortran为例,带您揭秘弹性塑性模型编程之道

通过以上步骤,我们已经在Abaqus中使用Fortran实现了横向各向同性线弹性理想塑性材料模型的umat子程序。在实际应用中,我们需要根据具体的材料特性和加载条件来调整模型参数和计算过程。尽管我在这篇文章中尽力提供了详细的教程,但由于我自身的知识限制和经验不足,可能会有误解或错误。我希望大家在学习过程中能多思考,多实践,多交流,以更好地理解和掌握这个主题。

qq_38334677的博客 1690

Android 触摸事件分发和处理机制解析(三)View篇

本文未完成,持续更新中——————– 在我们自定义view或者嵌套view时,经常需要处理滑动事件,点击事件等各种交互事件。在处理过程中,我们可能会遇到事件不响应,滑动和点击事件冲突等问题,这时候,如果我们理解Android触摸事件的分发和处理,处理起来就会得心应手。 本系列分析前两篇,建议先看看: Android 触摸事件分发和处理机制解析(一)Activity篇 Android 触摸...

本人整理的笔记与总结,涉及Android,Java,React,设计模式,算法等,愿对大家有帮助 587

Response Instance 详解:在 ABAP OData Client Proxy 中读懂每一次响应

ABAP OData Client Proxy中的Response Instance是关键信息载体,封装了业务数据及调用上下文(如分页、delta link等)。响应实例在执行请求后自动生成,根据请求类型返回特定接口(如READ返回/IWBEP/IF_CP_RESPONSE_READ)。响应抽象与OData版本解耦,支持统一处理V2/V4服务。常见响应类型包括单实体读取、列表读取(支持分页和增量同步)、创建/更新/删除响应等。开发时可通过响应对象的安全类型方法获取数据,如get_business_data获

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 136

Python爬虫技术:使用Playwright和Twitter API v2高效获取Twitter/X数据完全教程

遵守规则:始终遵循Twitter的使用条款和速率限制错误处理:实现完善的错误处理和重试机制数据质量:进行数据清洗和验证性能优化:使用异步处理和合理的延迟设置可维护性:模块化代码,便于维护和扩展。

2201_76125261的博客 671

android view 点击 和 触摸,android中View点击和触摸事件的处理

android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解。一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP当屏幕中包含一个ViewGroup,而这个V...

weixin_39793098的博客 2704

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android view触摸事件分发dispatchTouchEvent 拦截 onInterceptTouchEvent 处理 onTouchEvent

首先,理解用户触摸操作引发的触摸事件在android中拆分为3个步骤 MotionEvent.ACTION_DOWN//按下事件 MotionEvent.ACTION_MOVE//移动事件 //结束事件 MotionEvent.ACTION_UP://按下直接抬 MotionEvent.ACTION_CANCEL://接下后触摸滑动后再抬起 然后,再了解,android的事件是怎么传播的 不...

qq_35772366的博客 887

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

View 触摸事件分发例子

点击事件的触发流程好比去小区送快递,还不知道是谁的快递。 例子对照: 楼(ViewGroup)、进楼(ViewGroup.dispatchTouchEvent)、楼下门岗拦截(ViewGroup.onInterceptTouchEvent)、 住户房间(View)、进住户房间(View.dispatchTouchEvent)、询问用户收不收快递(View.onTouchEvent)、询问大楼管理...

qq_34224268的博客 1390

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

安卓如何解决子view与父view同时处理一个事件

安卓如何解决子view与父view同时处理一个事件安卓如何解决子view与父view同时处理一个事件前言:为什么要这么做? 安卓如何解决子view与父view同时处理一个事件 前言:为什么要这么做? 工作的时候遇到了一个问题,写了个滑动的视图,父view中填入子view,父view可以进行滑动,而子view又需要做点击事件,所以当在子view中进行滑动时则拦截了父view的滑动事件(因为子view...

u010022461的博客 2155

Android 触摸事件系列一:原始View与ViewGroup的事件处理

View 的dispatchTouchEvent 与 onTouchEvent public boolean dispatchTouchEvent(MotionEvent event) { ...... if (onFilterTouchEventForSecurity(event)) { //noinspection SimplifiableIfStateme...

wakewakewake的专栏 279

事件分发理解:在整个界面的触摸事件中分别处理某些view

软键盘: 1,showSoftInput(view, InputMethodManager.SHOW_FORCED); 可通过第二个参数flags设置SHOW_IMPLICIT效果就是触摸edittext外任何区域就隐藏软键盘 设置flags为SHOW_FORCED触摸任何区域不隐藏   2,在重写dispatchTouchEvent,在down事件中隐藏软键盘。事件分发大家应该知道,是...

m0_38058826的博客 270

android 触摸监听重写_Android 触摸事件监听(Activity层,ViewGroup层,View层)详细介绍...

Android不同层次的触摸事件监听APP开发中,经常会遇到有关手势处理的操作,比如向右滑动返回上一个页面。关于触摸事件的处理,我们可以大概处理在不同的层次上。Activity层:可以看做触摸事件获取的最顶层ViewGroup层:ViewGroup层可以自主控制是否让子View获取触摸事件View层:可以决定自己是否真正的消费触摸事件,如果不消费抛给上层ViewGroupActivity级别的手势...

weixin_36329465的博客 1229

139.触摸事件 【view接受事件】

为整个 View 设置触摸监听器:用于处理特定 View 上的触摸事件。重写方法:用于捕捉和处理整个 Activity 范围内的触摸事件。结合使用:可以根据需要同时使用这两种方法,以实现更加复杂和灵活的触摸事件处理逻辑。onTouch方法在处理特定 View 的触摸事件时非常有用。它是在为 View 设置触摸事件监听器时使用的,通过实现接口,并将其传递给方法来使用。在某些情况下,使用onTouch比重写。

2303_79132118的博客 1418

View在setScale后,getTop,getLeft和getLocationOnScreen的区别

1.当view 在进行setScale操作缩小后,view.getWidth 和view.getHeight 并不会有变化,原本是多少像素的,大小还是多少像素。 2.getLocationOnScreen可以获取View在屏幕中的绝对坐标,而这个值会根据setScale而改变

hemezo的专栏 2402

Android中触摸事件传递过程

Android中触摸事件传递过程

tjt852的专栏 914
上一篇: Objective-C中的屏幕截图
下一篇: UITouch
explore_zhang
博客等级 码龄11年 5粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值