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

Cocoa touch 如何确定点击了哪个按钮?,cocoa-touch,ios5,xcode4,Cocoa Touch,Ios5,Xcode4,我有这个日历,由48个框架组成,按程序创建。。。当我执行UITapGestureRecognitor时,它会返回帧的x,y坐标。。。知道如何确定哪一帧被点击了吗 更新:这是创建框架的代码: self.frame = frame; self.backgroundColor = [UIColor colorWithRed:rd1 green:gr1 blue:bl1 alpha:1.0]; [[self layer] setBorderColor:[[UIColor blackColor] CGC

我有这个日历,由48个框架组成,按程序创建。。。当我执行UITapGestureRecognitor时,它会返回帧的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];

如果您有按钮,如果启用它们,点击它们将触发链接到点击操作的方法

因此,每个按钮都有一个“标记”属性

tag属性可以让您知道哪个按钮触发了该方法

编辑:

如果按钮属于UIButton类,则可以通过tag属性获取按钮的标记,即:

mybutton.tag


如果我理解你在做什么,那么下面的例行公事可能会有用。它获取触摸坐标,然后对数组中的每个矩形进行测试。如果CPPoint在一个rect中,那么你就有了你的索引号,并以此为基础,你可以做你需要做的事情

根据定义矩形数组的方式,可能需要规范化接触点

不管怎样,希望能有帮助

- (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;
        }
    }
} 
-(void)touchesbeated:(NSSet*)toucheevent:(UIEvent*)event
{
UITouch*touch=[触摸任何对象];
CGPoint=[触摸位置视图:self.view];
//查看所接触的点是否在这些矩形边界内
if(CGRectContainsPoint(self.gridRect,point))
{
CGRect rect;
int cnt=self.cellRectary.count;
对于(int i=0;i

}

如果您使用的是
UITapgestureRecognitor
,为什么不直接询问它附加到哪个视图

- (void)cellTapped:(UITapGestureRecognizer *)tapGestureRecognizer;
{
    NSLog(@"%@", tapGestureRecognizer.view);
}

您能否提供更多信息,例如如何创建和布局48个按钮?例如,您可以遍历所有按钮,并测试您的坐标是否属于按钮的框架,或者如果您知道布局规则,则可以根据坐标计算按钮……如果您有按钮,为什么不为每个按钮分配一个操作,而不是使用手势识别器?您的代码不会创建UIButton类所指的UIButton。我明白你的意思。。。好的,让我们换个说法。。我正在画一个长方形。。。如何识别每一个(如UIButton中的“标记”)?myButton.tag=1、myOtherButton.tag=2等。然后创建一个方法将其操作链接到。看看我在上一篇评论中发布的链接中给出的示例代码。您将看到如何管理使用UIButton我不想使用UIButton。。。我想在绘制矩形时使用它们…我想这样就可以了。。。我想我需要首先捕获每个矩形的坐标,并将它们存储在一个数组中,以及其他数据,如日期等。我会尝试一下,然后再给你回复。。。谢谢你的回复!唯一棘手的事情是@在同一个坐标空间中工作:触摸坐标与UIView坐标。这就是
CGRectOffset
的作用-相对于视图的x/y移动它们。此外,“cellRect”是一个自定义的基于NSObject的类,用于在NSArray中存储CGRect,因为您不能在NSArray中存储原始CGRect。-干杯
- (void)cellTapped:(UITapGestureRecognizer *)tapGestureRecognizer;
{
    NSLog(@"%@", tapGestureRecognizer.view);
}