我有这个日历,由以编程方式创建的48帧组成...当我执行UITapGestureRecognizer时,它返回帧的x,y坐标...任何想法如何确定点击了哪个帧?
更新:这是创建框架的代码:
self.frame = frame;
self.backgroundColor = [UIColor colorWithRed:rd1 green:gr1 blue:bl1 alpha:1.0];
[[self layer] setBorderColor:[[UIColor blackColor] CGColor]];
[[self layer] setBorderWidth:0.5];
[[self layer] setCornerRadius:10];
[self setClipsToBounds: YES];
答案 0 :(得分:1)
如果我理解你在做什么 - 那么下面的例程可能会有用。它获取触摸坐标,然后针对阵列中的每个rect测试它。它CPPoint在一个矩形内,然后你有你的索引号,并根据你可以做你需要做的。
根据您定义rects数组的方式,您可能需要规范化触摸CGPoint。
无论如何 - 希望它有所帮助。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
// See if the point touched is within these rectangular bounds
if (CGRectContainsPoint(self.gridRect, point))
{
CGRect rect;
int cnt = self.cellRectArray.count;
for (int i = 0; i < cnt; i++) {
rect = [[self.cellRectArray objectAtIndex:i] cellRect];
rect = CGRectOffset(rect, self.gridOriginX, self.gridOriginY);
rect = CGRectInset(rect, 10, 10);
if (CGRectContainsPoint(rect, point)) {
// do something
break;
}
}
}
}
答案 1 :(得分:0)
如果您有按钮,如果启用它们,点按它们将触发您与点击操作相关联的方法。
因此每个按钮都有一个“tag”属性。
标签属性可以让您知道哪个按钮触发了该方法。
编辑:
如果你的按钮属于UIButton类,你可以通过tag属性获取按钮的标签,即:
mybutton.tag
或
[mybutton tag]
答案 2 :(得分:0)
如果您使用的是UITapGestureRecognizer
,那么为什么不询问它附加到哪个视图?
- (void)cellTapped:(UITapGestureRecognizer *)tapGestureRecognizer;
{
NSLog(@"%@", tapGestureRecognizer.view);
}