Objective-C 之 响应对象链

  UIResponder对象可以接受触摸事件,UIView、UIWindow、UIViewController等都是其子类,其中UIViewController不是视图对象,既不能被触摸得到,也无法显示,为什么也会是 UIResponder子类的呢?这不是很奇怪吗?

  其实,UIResponder对象都会有一个名为nextResponder的指针,藉由这个指针,可以组成一个响应对象链。当UIView对象属于某个UIViewController时,它的nextResponder指针就会指向这个UIViewController。当UIView不属于任何UIViewController时,它的nextResponder指针就会指向父视图。UIViewController的nextResponder指针指向UIWindow,而UIWindow的nextResponder指针指向UIApplication。由底层到顶层形成一个完成的链条。如下图:


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

推荐阅读更多精彩内容

  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 6,140评论 4 26
  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 58,180评论 51 603
  • 功能:创建一个画板应用 TouchTracker,用户可以在该视图上触摸并绘制线条。借助多点触摸,用户可以同时画多...
    独木舟的木阅读 645评论 1 0
  • 7、不使用IB是,下面这样做有什么问题? 6、请说说Layer和View的关系,以及你是如何使用它们的。 1.首先...
    AlanGe阅读 725评论 0 1
  • 摩洛哥四大古都中歷史最悠久的菲斯 (Fes) 可以算是我們這趟旅程的據點, 到撒哈拉沙漠的前後我們都會在這裏停留一...
    閒豆阅读 185评论 1 1