1、if super init 使用 Aspects 进行方法的拦截 AspectOptions 三种方式选择在原本方法前执行在原本方法后执行替换原本方法 UIViewController aspect_hookSelector@selectorviewWillAppear withOptionsAspectPositionAfter usingBlock^idltaspectinfo aspectInfouiview拦截网址, BOOL animated;在uiview拦截网址你需要的位置添加上一个UIButton 继承自UIControl之类的可以接收事件的控件,就可以了这个控件会拦截事件,不会继续向下传具体原理参考iOS响应者链的相关知识;1当一个事件发生后,事件会从父控件传给子控件,也就是说由UIApplication UIWindow UIView initial view,以上就是事件的传递,也就是寻找最合适的view的过程 2接下来是事件的响应首先看initial view能否处理这个事件,如果不能则会将事件传递给其上级视图inital view的superView如果上级视图。
2、若当前应用的app delegate是一个UIResponder对象,且不是UIViewUIViewController或app本身,则UIApplication的nextResponder为app delegate 响应者链的事件传递过程 1 如果当前view是控制器的view,那么控制器就是上一个响应者,事件就传递给控制器如果当前view不是控制器的view,那么父视图就是当前view的上一个。
3、没有直接取消的方法,只能间接的实现在UIView中实现hitTestwithEvent,并在这个方法中,追加哪个视图必须响应touch的事件。
发表评论