#import <UIKit/UIKit.h> @interface UIView (Responser) /** view的第一个响应控制器 @return view的第一个响应控制器 */ - (UIViewController *)viewController; @end #import "UIView+Responser.h" @implementation UIView (Responser) /** view的第一个响应控制器 @return view的第一个响应控制器 */ - (UIViewController *)viewController { UIResponder *nextResponder = [self nextResponder]; //获取当前uiview的下一个事件响应者 do { if ([nextResponder isKindOfClass:[UIViewController class]]) { //如果当前的事件响应者具备push方法,也就是属于 return (UIViewController *)nextResponder; //UIViewController,返回UIViewController } nextResponder = [nextResponder nextResponder]; //否则一直寻找下一个响应者 } while (nextResponder); return nil; } @end