最近看了一篇iOS的响应链的文章,颇觉受益。分享刚到朋友圈给同事看过之后,同事问了我几个问题。我就发现,我每次看别人的帖子,觉得好像理解了。你要是再仔细问我,我也说不出所以然来。先整理一点东西吧,方便自己理解和以后查找 Responder Chain(ios事件传递)
我先把问题贴出来:
1、为什么触摸事件是由Application产生,然后分发,而不是直接触摸谁,谁响应?
2、事件冲突是怎么产生的,能否复现?
3、通过Application的层级可以找到当前在终端显示的view,那么自己可否也通过代码实现?
关于问题1,
UIResponder中的默认实现是什么都不做,但UIKit中UIResponder的直接子类(UIView,UIViewController…)的默认实现是将事件沿着responder chain继续向上传递到下一个responder,即nextResponder。 因为UIApplication 是当前app的最底层,默认的第一响应者, 所以由UIApplication进行事件分发。
关于问题2,
冲突 产生的原因在于 同一种手势 在父类 和子类都存在 那么响应的时候 就会出现冲突 是可以复现的
关于问题3,