UIView nextResponder如何知道UIViewController是什么?

Fin*_*Fin 13 iphone cocoa-touch objective-c uikit

就好奇而言,UIView类的nextResponder方法实现如何知道谁是管理视图的UIViewController?UIResponder文档说明了这一点,我可以看到它有效,但我不太明白.据我所知,UIView没有保持对它的控制器的引用,那么幕后发生了什么?或者我只是遗漏了一些明显的东西?

我对Objective-C和iPhone的开发还很新,所以如果这很明显,我很抱歉,但我很好奇.

谢谢!

Dar*_*ren 8

响应链是从视图层次结构分开.响应者链可能如下所示:

First Responder > View Hierarchy > Window > Window Delegate > etc...
Run Code Online (Sandbox Code Playgroud)

但是,对象可以将自己插入到响应程序链中,这就是UIViewController的作用.来自文档:

由于视图控制器与它们管理的视图紧密绑定,因此它们也是用于处理事件的响应程序链的一部分.视图控制器本身是UIResponder类的后代,并插入到托管视图及其超级视图之间的响应程序链中.

在Big Cocoa中,这是使用-setNextResponder:方法完成的.这种方法在Cocoa Touch中并不公开,但是UIViewController似乎也是如此.