2013-10-17 77 views
2

我试图添加一个动作,一旦图像被点击。我第一次尝试添加一个C4Button,然后给它一个图像,但那根本不起作用。所以,现在我想只需添加一个水龙头函数的图像 这里是代码图像作为按钮C4

-(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?)。他们是为形状,我认为它应该只是对图像工作相同,但显然它不...

回答

1

亚当的答案是正确的手势。一般来说,当你想要一些对象的额外/自定义功能时,你想使用它们。

但是,你的情况要简单地使用图像作为按钮,就可以执行以下操作来实现这一目标,而不必使用手势:

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

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

+0

谢谢!这工作得很好! – suMi

1

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

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

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