我在C4应用的画布上添加了42个形状。如何确定用户触摸了哪一个形状?
我按如下方式添加形状:
#import "C4Workspace.h"
@implementation C4WorkSpace{
C4Shape *greyRect;
}
-(void)setup {
int imageWidth=53.53;
int imageHeight=65.1;
for (int i=0; i<42; i++) {
int xMultiplier=(i)%6;
int yMultiplier= (i)/6;
int xPos=xMultiplier*imageWidth;
int yPos=yMultiplier*imageHeight;
greyRect=[C4Shape rect:CGRectMake(xPos, yPos, imageWidth, imageHeight)];
greyRect.fillColor=[UIColor colorWithRed:0 green:0 blue:0 alpha:0];
greyRect.lineWidth=2;
greyRect.strokeColor=[UIColor colorWithRed:0.7 green:0 blue:0 alpha:1];
[self listenFor:@"touchesBegan" fromObject:greyRect andRunMethod:@"highlightLetter"];
[self.canvas addShape:greyRect];
}
}
-(void)highlightLetter{
C4Log(@"highlightLetter");
}
@end
我几乎只需要知道点击的矩阵有哪个数字[i]。
但我不知道如何在运行该行后访问该行:[self listenFor:@"touchesBegan" fromObject:greyRect andRunMethod:@"highlightLetter"];
有什么建议吗?
答案 0 :(得分:1)
查看C4网站上的通知教程的WHO SAID WHAT?部分。
这部分通知教程解释了如何对给定对象的通知作出反应,并实际确定哪个对象只是广播该通知。
诀窍在于构建一个接受通知的方法:
-(void)highlightLetter:(NSNotification *)notification {
C4Shape *shape = (C4Shape *)notification.object;
//do stuff to the shape
}
另外,请记住因为该方法采用 变量,您必须在方法名称中包含:
,如下所示:
[self listenFor:@"touchesBegan"
fromObject:greyRect
andRunMethod:@"highlightLetter:"];