Iphone 实现UIView类别时出现问题
无论出于何种原因,以下代码不起作用:Iphone 实现UIView类别时出现问题,iphone,objective-c,cocoa-touch,uiview,categories,Iphone,Objective C,Cocoa Touch,Uiview,Categories,无论出于何种原因,以下代码不起作用: #import <Foundation/Foundation.h> @interface UIView (FindUIViewControllerParent) - (UIViewController *) firstAvailableUIViewController; - (id) traverseResponderChainForUIViewController; @end #import "UIView+FindUIViewCon
#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];
#导入
@接口UIView(FindUI控制器客户端)
-(UIViewController*)第一个可用的活动控制器;
-(id)traverseResponderChainForUIViewController;
@结束
#导入“UIView+FindUIViewControllerParent.h”
@实现UIView(FinDuiviewController客户端)
-(UIViewController*)第一个可用的活动控制器
{
返回(UIViewController*)[UIViewController的自遍历响应链];
}
-(id)traverseResponderChainForUIViewController
{
id nextResponder=[self nextResponder];
if([nextResponder IsKindof类:[UIViewController类]])
{
返回下一个响应者;
}
else if([nextResponder IsKindof类:[UIView类]])
{
返回[nextResponder traverseResponderChainForUIViewController];
}
其他的
{
返回零;
}
}
@结束
parentViewController=[self-firstAvailableUIViewController];
第一响应者返回为nil,而不是父视图控制器(当我在没有类别的情况下执行时,它工作正常)。我读过一些其他线程,它们说要对项目设置中的其他链接选项进行一些调整,我尝试过这些,但仍然不起作用。有人知道我做错了什么吗?(这段代码几乎完全是从另一个线程复制的,该线程获得了大量的投票) 我发现了我的问题。在视图连接到视图控制器之前,我在init方法my view中查找并存储nextResponder。这就是它正确显示为空的原因。我在按钮操作方法中使用了我的分类方法,然后效果很好。我发现了我的问题。在视图连接到视图控制器之前,我在init方法my view中查找并存储nextResponder。这就是它正确显示为空的原因。我在button action方法中使用了我的category方法,然后它工作得很好。在类中抛出一个#错误,这样你就可以检查类别是否被编译了。can-它被编译了,因为当我调试时,那部分代码被激活了。问题是,它为self nextResponder返回的响应程序是nil,而它本不应该是。在类中抛出一个#错误,这样你就可以检查类别是否被编译。can-它被编译是因为当我调试时,该部分代码被激活。问题是,它返回到self nextResponder的响应者为零,而它本不应该为零。