我动态创建了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 ...有没有办法通过标签来识别它?
答案 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);
}