《iOS事件触摸与手势》

iOS事件触摸与手势

一、事件分发处理【由外到内】
在iOS中发生触摸后,事件会加到UIApplication事件队列,UIApplication会从事件队列取出最前面的事件进行分发处理,通常会先分发给主窗口,主窗口会调用hitTest:withEvent:方法,查找适合的事件触发视图,即 找到被触摸的视图对象
寻找流程如下:
在顶级视图(keyWindow的视图)上调用pointInside:withEvent:方法判断触摸点是否在当前视图内;
如果返回NO,那么keyWindow的hitTest:withEvent:返回nil;
如果返回YES,那么它会向当前视图的所有子视图发送hitTest:withEvent:消息,遍历所有子视图的顺序是从subviews数组的末尾向前遍历(从界面最上方开始向下遍历);
如果有subview的hitTest:withEvent:返回非空对象,则keyWindow的hitTest:withEvent:返回此对象,处理结束;
如果所有subview遍历结束仍然没有返回非空对象,则keyWindow的hitTest:withEvent:返回顶级视图;

常用属性的设计
<code> userInteractionEnabled = NO;
hidden = YES;
alpha = 0 ~ 0.01;
<code>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容