如何推广素马杭州网站的网络平台?
摘要:素马杭州网站设计介绍,网络平台怎么推广,4399页游网站,网站建设行业iOS 事件的主要由:响应连 和 传递链 构成。一般事件先通过传递链,传递下去。响应链&#xf
素马杭州网站设计介绍,网络平台怎么推广,4399页游网站,网站建设行业iOS 事件的主要由#xff1a;响应连 和 传递链 构成。一般事件先通过传递链#xff0c;传递下去。响应链#xff0c;如果上层不能响应#xff0c;那么一层一层通过响应链找到能响应的UIResponse。
响应链#xff1a;由最基础的view向系统传递#xff0c;first view -响应连 和 传递链 构成。一般事件先通过传递链传递下去。响应链如果上层不能响应那么一层一层通过响应链找到能响应的UIResponse。
响应链由最基础的view向系统传递first view - super view - ... - view controller - window - Application - AppDelegate传递链有系统向最上层view传递Application - window - root view - sub view - ... - first view
一、谁来响应事件 —— 传递链
只有继承了UIResponser的对象才能够接受处理事件。UIResponse是响应对象的基类定义了处理各种事件的接口。在 UIKit 中我们使用响应者对象Responder接收和处理事件。一个响应者对象一般是 UIResponder 类的实例它常见的子类包括 UIViewUIViewController 和 UIApplication这意味着几乎所有我们日常使用的控件都是响应者如 UIButtonUILabel 等等。
在 UIResponder 及其子类中我们是通过有关触摸UITouch的方法来处理和传递事件UIEvent具体的方法如下
open func touchesBegan(_ touches: SetUITouch, with event: UIEvent?)
open func touchesMoved(_ touches: SetUITouch, with event: UIEvent?)
open func touchesEnded(_ touches: SetUITouch, with event: UIEvent?)
open func touchesCancelled(_ touches: SetUITouch, with event: UIEvent?) UIResponder 还可以处理 UIPress、加速计、远程控制事件这里仅讨论触摸事件。 在 UITouch 内存储了大量触摸相关的数据当手指在屏幕上移动时所对应的 UITouch 数据也会更新例如
这个触摸是在哪个 window 或者哪个 view 内发生的当前触摸点的坐标是前一个触摸点的坐标是当前触摸事件的状态是 这些都存储在 UITouch 里面。另外需要注意的是在这四个方法的参数中传递的是 UITouch 类型的一个集合 (而不是一个 UITouch)这对应了两根及以上手指触摸同一个视图的情况。我们以UIView 来作为视图层级的主要组成元素便于理解。但不止 UIView 可以响应事件实际只要是 UIResponder 的子类都可以响应和传递事件。 当我们触摸了屏幕。此时所拥有的信息是触摸点的坐标但无法直接知道用户是想点哪个视图。需要一个策略来找到这个第一响应者UIKit 为我们提供了命中测试hit-testing来确定触摸事件的响应者这个策略具体是怎么运作的
命中测试 图中还有一些细节需要先说明
在 检查自身可否接收事件 中如果视图符合以下三个条件中的任一个都会无法接收事件 view.isUserInteractionEnabled falseview.alpha 0.01view.isHidden true检查坐标是否在自身内部 这个过程使用了 func point(inside point: CGPoint, with event: UIEvent?) - Bool 方法来判断坐标是否在自身内部该方法是可以被重写的。从后往前遍历子视图重复执行 指的是按照 FILO 的原则将其所有子视图按照「后添加的先遍历」的规则进行命中测试。该规则保证了系统会优先测试视图层级树中最后添加的视图如果视图之间有重叠该视图也是同级视图中展示最完整的视图即用户最可能想要点的那个视图。在 按顺序看看平级的兄弟视图 时若发现已经没有未检查过的视图了则应走向 诶没有子视图符合要求。
我们举个例子来解释这个流程在例子中我们从当前 UIViewController 的根视图开始执行这个流程。下图中灰色视图 A 可以看作是当前 UIViewController 的根视图右侧表示了各个视图的层级结构用户在屏幕上的触摸点是处并且这 5 个视图都可以正常的接收事件。
