Определение позиции UIButton - PullRequest
       0

Определение позиции UIButton

0 голосов
/ 20 октября 2011

Я создал 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 ]

1 голос
/ 20 октября 2011

попробуйте это:

-(void)checkboxButton:(UIButton*)sender
{
  NSLog(@"%f  %f",sender.frame.origin.x,sender.frame.origin.y);
}
0 голосов
/ 20 октября 2011

Вы можете попробовать это ...

-(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);
}
0 голосов
/ 20 октября 2011

Я так понимаю, xPos - это глобальная переменная - конечно, она содержит значение последней кнопки, это значение, которое было установлено в качестве последнего.

Для позиции кнопки вам не нужно ничего хранитьв глобальной переменной - просто получите ее из объекта отправителя, который доставляется вам в обработчике события click - это указатель UIButton, а объект UIButton имеет структуру фрейма с origin.x и origin.y, а такжекстати, size.width и size.height.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...