官方解释

UIView implements this method by returning the UIViewController object that manages it (if it has one) or its superview (if it doesn’t); UIViewController implements the method by returning its view’s superview; UIWindow returns the application object, and UIApplication returns nil.

id next = [self nextResponder];while(![next isKindOfClass:[ViewController class]]) { next = [next nextResponder];}if ([next isKindOfClass:[ViewController class]]) { controller = (ViewController *)next;}