事件如何传递?( UIApplication->keywindow->superView->fitView)
1、判断主窗口是否接受触摸事件( userInteractionEnabled,hidden,透明度《0.01)
2、触摸点是否在自己身上
3、从后往前遍历子控件,重复前面的两个步骤(首先查找数组中最后一个元素)
4、如果没有符合条件的子控件,那么就认为自己最合适处理
hitview 拦截事件
拦截父视图事件,拦截同级视图事件,
如果同级视图的,顺序在数组中朝后则,拦截不住,
如果父视图,由于事件从父传到子,也能拦截到子视图的
先从父视图的子视图的数组中(A,B)由后向前遍历,
如果A、B都重写了hitview,触摸A 优先会被B拦截
如果A重写了hitView,但触摸B,则B会立刻响应,
说明找到触摸点位置,如果实现了响应,则传递结束
响应链
响应链从上往下传递直到UIApplication,只要有响应就终止
关系
事件传递的终点就是响应链的起点,他们是一个逆向的过程
事件传递梳理

思考:window[A,B], B[4,5,6], A[1,2,3]

1、如果点击7,没有事件拦截,正常是怎么传递?
2、如果点击7,A实现了拦截,是怎么传递?2实现了拦截是怎么传递?
3、如果点击7,5实现拦截,是怎么传递?
评论中给出您的答案吧。
如果本人有理解不对的地方,请赐教,感激不尽
版权声明:本文为frankkay原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。