iOS hit-Testing

UIView中提供两个方法用来确定hit-testing View


hitTest:withEvent:方法的处理流程:

先调用pointInside:withEvent:判断触摸点是否在当前视图内;

如果返回YES,

该视图的所有子视图调用hitTest:withEvent,调用顺序由层级低到高依次调用。

如果返回NO,

hitTest:withEvent返回nil,该视图的所有子视图的分支全部被忽略。




备注:

如果View的同级别Subview中有重叠的部分,则优先检查顶部的Subview,如果顶部的Subview返回nil, 再检查底部的Subview

如果点击没有发生在某View中,那么该事件就不可能发生在View的Subview中,如果你的Subview设置了clipsToBounds=NO,实际显示区域可能超出了superView的frame,你点击超出的部分,是不会处理你的事件的。


以下情况导致自身和其所有子视图不能被hit-testing发现,无法响应触摸事件:

1.隐藏(hidden=YES)的视图

2.禁止用户操作(userInteractionEnabled=NO)的视图

3.alpha<0.01的视图

4.视图超出父视图的区域



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值