无论出于何种原因,以下代码无效:
#import <Foundation/Foundation.h>
@interface UIView (FindUIViewControllerParent)
- (UIViewController *) firstAvailableUIViewController;
- (id) traverseResponderChainForUIViewController;
@end
#import "UIView+FindUIViewControllerParent.h"
@implementation UIView (FindUIViewControllerParent)
- (UIViewController *) firstAvailableUIViewController
{
return (UIViewController *)[self traverseResponderChainForUIViewController];
}
- (id) traverseResponderChainForUIViewController
{
id nextResponder = [self nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
{
return nextResponder;
}
else if ([nextResponder isKindOfClass:[UIView class]])
{
return [nextResponder traverseResponderChainForUIViewController];
}
else
{
return nil;
}
}
@end
parentViewController = [self firstAvailableUIViewController];
firstResponder以nil的形式返回,而不是父视图控制器(当我没有它的类别时,它完成得很好)。我已经阅读了一些其他线程,他们说要对项目设置中的其他链接选项进行一些调整,我已经尝试过这些并且它仍然不起作用。谁能看到我在这里做错了什么? (这个代码几乎完全从另一个获得大量投票的线程中复制)。
答案 0 :(得分:1)
我发现了我的问题。在视图甚至连接到视图控制器之前,我一直在寻找并将initResponder存储在我的视图的init方法中。这就是它正确显示null的原因。我在按钮操作方法中使用了我的类别方法,然后它工作正常。