码迷,mamicode.com
首页 > 移动开发 > 详细

iOS响应链原理

时间:2017-07-16 13:29:17      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:turn   点击   范围   event   自己   views   bsp   原理   断点   

ios找到被点击的view的过程是从根view开始递归地调用hitTest方法,直到有一个子view的hitTest方法返回自身;如果所有一级子view的hitTest方法都返回nil,那么根view就返回自己

 

应用hitTest方法,hitTest方法的作用是返回被点击的view,只返回一个。

 

每个view都会有hitTest方法,hitTest方法里面会去调用pointInside方法来判断点击的点是否在自己的view范围内,hitTest返回自身view的条件是自身的hitTest方法被调用,自己的pointInside方法返回true,没有子view或者所有子view的hitTest方法返回nil。(另一种理解方法是点击的点在父view的范围内,父view才有可能会去调用子viewhitTest方法,这里说有可能的原因是 如果父viewuserInteractionEnabled  == NO 时,父view的hitTest方法会直接返回nil, 子viewhitTest方法也不会被调用)

 

hitTest方法大致的内容 

-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event {

//一些判断条件,比如userInteractionEnabled == NO 时直接返回nil

 

 if([self pointInside:point withEvent:event]) {

 for(UIView *subView in self.subViews) {

      UIView *hitView = [subView hitTest:point withEvent:event];

      if(hitView) {

            return hitView;

      }

 }

 return self;

}

 

 return nil;

}

iOS响应链原理

标签:turn   点击   范围   event   自己   views   bsp   原理   断点   

原文地址:http://www.cnblogs.com/yibinpan/p/7190215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!