如何确定点击了哪个按钮?

时间:2012-03-30 20:18:11

标签: cocoa-touch ios5 xcode4

我有这个日历,由以编程方式创建的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];

3 个答案:

答案 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);
}