向形状添加手势 - c4framework

时间:2012-04-19 15:33:31

标签: ios c4

我正在学习如何使用C4框架并尝试将手势添加到形状中,但我似乎无法弄清楚如何让它们做任何事情。当我尝试在点击按钮后更改按钮的位置时,以下方法会产生错误。

[buttonA addGesture:TAP name:@"tapGesture" action:@"setPosition"];

这是我得到的错误: * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [MyButton setPosition]:无法识别的选择器发送到实例0x7661b60'

2 个答案:

答案 0 :(得分:3)

我猜你得到错误的原因是因为setPosition方法是因为你试图直接在C4Shape对象上运行setPosition方法。在本地,C4Shapes没有这种方法。

在C4中,所有对象都可以附加手势,但是当您在对象上触发手势时,为了运行任何自定义代码,您应首先将C4Shape子类化并编写一个特殊方法来处理您想要查看的行为。 / p>

例如,我会像这样创建一个MyShape类:

@interface MyShape : C4Shape
-(void)setNewPosition;
@end

@implementation MyShape
-(void)setNewPosition {
    //will set the center of the shape to a new random point
    self.center = CGPointMake([C4Math randomInt:768], [C4Math randomInt:1024]);
}
@end

然后,在我的C4WorkSpace中:

#import "C4WorkSpace.h"
#import "MyShape.h"

@implementation C4WorkSpace {
    MyShape *newShape;
}
-(void)setup {
    newShape = [MyShape new];
    [newShape ellipse:CGRectMake(100, 100, 200, 200)];
    [newShape addGesture:TAP name:@"tapGesture" action:@"setNewPosition"];
    [self.canvas addShape:newShape];
}
@end

这应该使用新的子类形状注册一个轻击手势,并在触发手势时运行其setNewPosition方法。

答案 1 :(得分:1)

为了让手势“发送”你想要完成的动作,你需要为类“myButton”设置一个名为“setPositon”的方法。您是否在代码中调用了此方法?