美文网首页
响应链总结梳理与应用

响应链总结梳理与应用

作者: hoggenWang | 来源:发表于2018-03-19 14:52 被阅读39次

响应链总结梳理与应用

App使用响应者对象接收和处理事件,响应者对象是任何UIResponder的实例。UIResponder的子类包括UIView,UIViewController,UIApplication等。响应者接收到原始事件数据,必须处理事件或者转发到另一个响应者对象。当你的App接收到一个事件时,UIKit自动引导事件到最合适的响应者对象,也叫做第一响应者。

响应链

- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event;   // recursively calls -pointInside:withEvent:. point is in the receiver's coordinate system
- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event;   // default returns YES if point is in bounds

一个是根据点击坐标返回事件是否发生在本视图以内,另一个方法是返回响应点击事件的对象。
系统先调用pointInSide: WithEvent:判断当前视图以及这些视图的子视图是否能接收这次点击事件,然后在调用hitTest: withEvent:依次获取处理这个事件的所有视图对象,在获取所有的可处理事件对象后,开始调用这些对象的touches回调方法

第一个过程是建立响应链的过程,将可以响应该事件的对象找出来,UIApplication对象维护着自己的一个响应者栈,当pointInSide: withEvent:返回yes的时候,响应者入栈。

响应者栈(图片来源于网络).png

栈顶的响应者作为最优先处理事件的对象,假设最顶层的响应者不处理事件,那么出栈,移交给下一个响应者,以此下去,直到事件得到了处理或者到达AppDelegate后依旧未响应,事件被摒弃为止。

不规则图形中的应用

利用下面的方法可以控制响应视图的响应范围

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

在响应方法中做出响应的判断,返回true 表示响应该点击事件

利用响应链传参

利用响应链UIResponder (Extension)可以使用路由的方式将相关的相应由路由方式将信息传递下去,从而简化程序设计的复杂结构

- (void)routerEventWithName:(NSString *)eventName userInfo:(NSDictionary *)userInfo {
    //NSLog(@"%@",NSStringFromClass([self class]));
    //顺着相应链传递
    [[self nextResponder] routerEventWithName:eventName userInfo:userInfo];
}

在需要的响应者中重写这个方法即可。

相关文章

  • 响应链总结梳理与应用

    响应链总结梳理与应用 App使用响应者对象接收和处理事件,响应者对象是任何UIResponder的实例。UIRes...

  • IOS开发 事件响应链

    本节学习内容: 1.事件响应链的概念 2.事件响应链的传递机制 3.事件响应链的应用 响应顺序 Subview>M...

  • Swift学习笔记Day0726

    响应者链: 当Application Kit在应用程序中构造对象时,会为每个窗口建立响应者链。响应者链中的基本对象...

  • 响应链

    iOS事件响应链中Hit-Test View的应用从iOS的事件响应链看TableView为什么不响应touche...

  • 响应链的分析与应用

    UI相关的开发和调试中,经常会涉及到点击、触摸、手势等情况的调试,最开始的开发时,也许会用用touchBegan等...

  • iOS 响应链原理与应用

    前言 iOS响应者链是支撑App界面交互的重要基础,点击、滑动、旋转、摇晃等都离不开其背后的响应者链,所以每个iO...

  • 【iOS小结】事件和响应者链

    之前面试问到一个响应者链的问题,结果让我很尴尬。于是,就想着写篇关于响应链的总结。当然,响应者链也包含事件、响应者...

  • 【OC梳理】事件传递响应链-实战篇(伪)

    接上篇,【OC梳理】事件传递响应链-原理篇对于事件传递响应链,最常见的处理就是处理不规则区域的点击事件(例如以前常...

  • iOS基础06—--事件响应链

    iOS基础06—--事件响应链 移动应用的最大特性就是响应用户交互操作,那么iOS系统是如何去响应一个简单的点击事...

  • 应用监控大屏

    应用监控大屏 系统应用的监控、在线率、响应时间、智能运维服务链、提高办公应用与的情况基本信息了解。 监控大屏主要运...

网友评论

      本文标题:响应链总结梳理与应用

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