图像为按钮C4

时间:2013-10-17 07:44:05

标签: ios objective-c c4

我试图在点按图片后添加动作。我首先尝试添加一个C4Button然后给它一个图像,但这根本没有用。所以现在我试图只为图像添加一个点击功能 这是代码

-(void)setup{
//IMAGE AS BUTTON
    C4Image *photoButtonImage=[C4Image imageNamed:@"icons-02.png"];
    photoButtonImage.height=NavBarHeight;
    photoButtonImage.center=CGPointMake(self.canvas.width/2, self.canvas.height-NavBarHeight/2);
    [self.canvas addImage:photoButtonImage];
    [photoButtonImage addGesture:TAP name:@"tap" action:@"tapped"];
}
-(void)tapped {
    C4Log(@"tapped!");
}

[photoButtonImage addGesture:TAP name:@"tap" action:@"tapped"];方法应用于self完全正常,但如果我将其添加到图片(PhotoButtonImage)则没有任何反应。 我调查了2个答案(Gesture controls crash when calling methods on C4WorkSpace.mHow do I apply a UILongPressGestureRecognizer to a shape in C4?)。它们用于形状,我认为它应该对图像的工作方式相同,但显然它不是......

2 个答案:

答案 0 :(得分:1)

正在发生的事情是,当您向C4Image添加手势时,您调用C4Image的抽头方法而不是C4Workspace.m中提供的抽头方法。您需要做的是让C4Image在点击时发送通知,然后让C4Workspace.m听取通知并触发您的tapped方法。

[photoButtonImage addGesture:TAP name:@"tap" action:@"tapped:"];
[self listenFor:@"tapped" fromObject:photoButtonImage andRunMethod:@"tapped"];

添加手势时,最好添加冒号,以便使用参数调用方法。这将保证通知按预期工作。

答案 1 :(得分:1)

亚当的回答对于手势是正确的。通常,当您需要对象的一些额外/自定义功能时,您希望使用它们。

但是,在您的情况下,您只想将图像用作按钮,您可以执行以下操作,而无需使用手势:

[self listenFor:@"touchesBegan" fromObject:photoImage andRunMethod:@"aMethod"];

原因是所有 C4对象默认会发布基本触控通知。