iOS 响应链

iOS开发 - 事件传递响应链
iOS 响应者链,事件的传递
事件传递之响应链
Cocoa Touch事件处理流程--响应者链
iOS事件响应链中Hit-Test View的应用
hitTest:withEvent:方法将会忽略隐藏(hidden=YES)的视图,禁止用户操作(userInteractionEnabled=YES)的视图,以及alpha级别小于0.01(alpha<0.01)的视图。如果一个子视图的区域超过父视图的bound区域(父视图的clipsToBounds 属性为NO,这样超过父视图bound区域的子视图内容也会显示),那么正常情况下对子视图在父视图之外区域的触摸操作不会被识别,因为父视图的pointInside:withEvent:方法会返回NO,这样就不会继续向下遍历子视图了。当然,也可以重写pointInside:withEvent:方法来处理这种情况。
注意:
hidden=YES
userInteractionEnabled=NO (imageView默认)
alpha级别小于0.01(alpha<0.01)的视图
子视图区域超过父视图的部分,因为父视图的pointInside:withEvent:方法会返回NO,这样就不会遍历子视图了。

记录两个方法
- (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view; [aView convertPoint:point toView:bView];
讲point在aView里的坐标值 转换为到bView下的坐标。
正确调用 : point是aView上的一个点,现在转换到bView的坐标系上。

类似:- (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;

- (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view; [bView convertRect:self.frame fromView: aView];
对于rect也是一样.
rect的值原本是相对于在aView的视图里,现在转换到bView下。其实size没变,只有origin变了。

类似- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;

stackoverflow上有人提了这个问题,感觉说的很详细。点这里

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

推荐阅读更多精彩内容

  • 当我们在使用微信等工具,点击扫一扫,就能打开二维码扫描视图。在我们点击屏幕的时候,iphone OS获取到了用户进...
    VincentHK阅读 531评论 0 2
  • 首先清楚两个概念响应者:对用户交互动作事件进行响应的对象。响应者链:成为处理事件的响应者的先后顺序链。平时当我们点...
    mengyingguo阅读 409评论 0 1
  • 先说一下响应链是什么? 在我们点击屏幕时候,iOS操作系统回去用户的点击行为,把这个写包含点击事件的信息包装成UI...
    qui丶MyLove阅读 442评论 0 2
  • Hit-Testing 是什么 Hit-Testing 是一个决定一个点(比如一个触摸点)是否落在一个给定的物理对...
    0o冻僵的企鹅o0阅读 1,725评论 0 3
  • 首先感谢小易童鞋,这里自己也整理下这些容易忘记的代码 设置导航栏的背景颜色用barTintColor self.n...
    HT_Jonson阅读 969评论 0 51