hittest基础认知请自行搜索、本篇将跳过该部分。
需要处理hit-Test事件的情况 1
如上图所示、各视图之间的关系是(‘->表示子视图’):
RedView -> BrownView ->YellowView -> GreenView
【 传统的处理方案 】
上面这种UI布局下、如果需要greenView响应事件那么就需要处理其父视图YellowView中的hittest方法、以及YellowView的父视图BrownView中的hittest方法;一共需要处理GreenView的两个父视图中的hittest方法。
如果YellowView是A同学写的、那么则需要告诉A同学处理一下YellowView中的hittest方法;如果BrownView是B同学写的、那么也得告诉B同学处理一下BrownView中的hittest方法;而且在这两处代码的处理方式也不尽相同。这么做特别麻烦不说、此处还得需要修改别人的代码(或者麻烦别人修改他的代码)、很影响你开发的进度。。。
需要处理hit-Test事件的情况 2
如上图所示、各视图之间的关系是(‘->表示子视图’):
RedView -> BrownView ->YellowView -> GreenView
RedView -> BrownView ->GrayView
多说一句:这几种情况只是笔者在开发中碰到的;如果还有更复杂的情况那就更改需求或者重构代码吧。。。
优雅的处理方案 - Category
最后附上代码:
https://github.com/Avery-AN/HitTest