我在一个项目中使用 C4 框架,但在使用手势控件和从 C4WorkSpace 调用方法时遇到了一些麻烦。
我发现这个链接与这个问题有关,但它似乎并没有阻止我的程序抛出错误。
一点背景知识:我正在创建一个自定义按钮类,它有 4 个属性:UIColor、C4Shape 和 2 个浮点数(x/y 位置)。我将自定义按钮对象存储在一个数组中,并让这段代码为每个按钮添加一个手势并将其添加到画布中。
C4WorkSpace.m
for (button in buttonArray){
[button.shape addGesture:TAP name:@"tapGesture" action:@"tapped"];
[self.canvas addShape:button.shape];
[self listenFor:@"tapped" fromObject:button andRunMethod:@"doThis:"];
}
而且我的“-(void)setup”之外还有一个函数,它只打印一条日志消息:
-(void)doThis:(NSNotification *)notification{
NSLog(@"notification test");
}
我已经用一个类别扩展了我的 C4Shape 类,当我调用这个方法时它工作正常:
#import "C4Shape+myC4Shape.h"
@implementation C4Shape (myC4Shape)
-(void)printTest{
NSLog(@"this is a print test");
}
@end
当我尝试点击按钮时,我得到的错误被抛出,它说:由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[C4Shape tapped]:无法识别的选择器发送到实例 0x931e9c0'
我将我的“动作”设置为“点击”,但这只是我编造的。我知道这通常会调用形状类中的方法,但我试图调用不在 C4Shape 类中而是在主 WorkSpace 中的方法。我不确定是什么导致了这种情况或我做错了什么?我需要在方法的“动作”部分写些什么具体的东西吗?