2

一旦图像被点击,我正在尝试添加一个动作。我首先尝试添加一个 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?)。它们适用于形状,我认为它应该适用于图像,但显然它没有......

4

2 回答 2

1

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

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

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

这样做的原因是默认情况下所有C4 对象都会发布基本的触摸通知。

于 2013-10-17T17:44:40.680 回答
1

正在发生的事情是,当您将手势添加到C4Image您正在调用的C4Image不是您提供的点击方法的点击方法时C4Workspace.m。您需要做的是在C4Image被点击时发送通知,然后C4Workspace.m监听通知并触发您的tapped方法。

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

当您添加手势时,最好添加冒号以便调用带有参数的方法。这将保证通知按您的意愿工作。

于 2013-10-17T14:12:08.360 回答