iOS开发篇 - 触摸事件传递&事件响应链

作者: lucifrom_long | 来源:发表于2016-01-08 11:49 被阅读432次

触摸事件的传递

触摸事件的传递是从父控件传递到子控件

如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件

不能接受触摸事件的四种情况

不接收用户交互,即:userInteractionEnabled = NO

隐藏,即:hidden = YES

透明,即:alpha <= 0.01

未启用,即:enabled = NO

提示:UIImageView的userInteractionEnabled默认就是NO,因此UIImageView以及它的子控件默认是不能接收触摸事件的

如何找到最合适处理事件的控件:

首先,判断自己能否接收触摸事件

可以通过重写hitTest:withEvent:方法验证

其次,判断触摸点是否在自己身上

对应方法pointInside:withEvent:

从后往前(先遍历最后添加的子控件)遍历子控件,重复前面的两个步骤

如果没有符合条件的子控件,那么就自己处理

事件响应者链

如果当前view是控制器的view,那么就传递给控制器

如果控制器不存在,则将其传递给它的父控件

在视图层次结构的最顶层视图也不能处理接收到的事件或消息,则将事件或消息传递给UIWindow对象进行处理

如果UIWindow对象也不处理,则将事件或消息传递给UIApplication对象

如果UIApplication也不能处理该事件或消息,则将其丢弃

补充:如何判断上一个响应者

如果当前这个view是控制器的view,那么控制器就是上一个响应者

如果当前这个view不是控制器的view,那么父控件就是上一个响应者

相关文章

  • 二、事件传递链和响应者链

    iOS触摸事件详解iOS开发-事件传递响应链 响应者链 UIResponser包括了各种Touch message...

  • iOS 响应链

    iOS开发 - 事件传递响应链iOS 响应者链,事件的传递事件传递之响应链Cocoa Touch事件处理流程--响...

  • iOS开发篇 - 触摸事件传递&事件响应链

    触摸事件的传递 触摸事件的传递是从父控件传递到子控件 如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件...

  • iOS响应者链

    参考好文 iOS开发-事件传递响应链,用运行时分析 iOS事件传递:响应者链[译] http://www.jian...

  • 深入浅出iOS事件机制

    深入浅出iOS事件机制事件传递:响应链事件传递响应链

  • iOS开发之触摸事件

    本文介绍了iOS中使用频率较高的触摸事件,并阐述了事件产生和传递的过程,以及响应者链的事件传递过程 触摸事件 简介...

  • 初识iOS事情处理机制

    参考:史上最详细的iOS之事件的传递和响应机制-原理篇iOS触摸事件全家桶史上最详细的iOS之事件的传递和响应机制...

  • iOS事件,原来如此

    精简地说:iOS事件分为传递和响应两个部分。 事件传递(建立传递链): iOS系统检测到手指触摸(Touch)操作...

  • iOS-触摸事件传递、事件响应者链

    前言,本文简单了解触摸事件传递和事件响应者链。 一、知识点简介 1.1 iOS中的事件介绍 iOS中的事件可以分为...

  • iOS 触摸事件与响应理解

    参考文章: iOS触摸事件的流动 iOS触摸事件的传递与响应 UIViewController UIAppli...

网友评论

    本文标题:iOS开发篇 - 触摸事件传递&事件响应链

    本文链接:https://www.haomeiwen.com/subject/sowfkttx.html