识别UIButton的位置

时间:2011-10-20 10:05:04

标签: iphone uibutton

我动态创建了5个按钮,如下所示:

float xpos=0,ypos=0;
    for (int i = 0; i < 5; i++)
       {
            but = [UIButton buttonWithType:UIButtonTypeCustom];
            [but setTag:i];
            [but setImage:[UIImage imageNamed:@"btfrnt.png"] forState:UIControlStateNormal];
            [but setFrame:CGRectMake(xpos, ypos, 40, 40)];
             xpos+=80;
            [but addTarget:self action:@selector(checkboxButton:) forControlEvents:UIControlEventTouchUpInside];
            [self.view addSubview:but];
        }

在任何按钮的Click事件中,我想找到我点击的按钮的位置....

-(void)checkboxButton:(UIButton*)sender
{
  NSLog(@"%d",xpos);
}

但是,它只显示最后一个按钮的xpos ...有没有办法通过标签来识别它?

3 个答案:

答案 0 :(得分:1)

试试这个:

-(void)checkboxButton:(UIButton*)sender
{
  NSLog(@"%f  %f",sender.frame.origin.x,sender.frame.origin.y);
}

答案 1 :(得分:0)

我认为xPos是一个全局变量 - 当然它包含最后一个按钮的值,这是它设置为持续的值。

对于按钮位置,您不需要在全局变量中存储任何内容 - 只需从click事件处理程序中传递给您的sender对象中获取它 - 它是UIButton指针,并且UIButton对象具有顺便说一下,带有origin.x和origin.y的框架结构,以及size.width和size.height。

答案 2 :(得分:0)

你可以试试这个......

-(void)checkboxButton:(UIButton*)sender {
  UIButton *button = (UIButton *)sender;
  CGRect rect = button.frame;        //You may use sender.frame directly
  NSLog(@"X: %d", rect.origin.x);
  NSLog(@"Y: %d", rect.origin.y);
  NSLog(@"Width: %f", rect.size.width);
  NSLog(@"Height: %f", rect.size.height);
}