Как определить, какая кнопка была нажата? - PullRequest
0 голосов
/ 31 марта 2012

У меня есть этот календарь, составленный из 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 ]

1 голос
/ 31 марта 2012

Если я понимаю, что вы делаете - тогда может пригодиться приведенная ниже процедура.Он получает координаты касания, а затем проверяет его по каждому прямоугольнику в массиве.Если CPPoint находится внутри прямоугольника, то у вас есть свой индекс и на основании этого вы можете делать то, что вам нужно.

В зависимости от того, как вы определяете свой массив протоколов, вам может потребоваться нормализовать сенсорный 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;
        }
    }
} 

}

0 голосов
/ 31 марта 2012

Если вы используете UITapGestureRecognizer, то почему бы просто не спросить, к какому виду он прикреплен?

- (void)cellTapped:(UITapGestureRecognizer *)tapGestureRecognizer;
{
    NSLog(@"%@", tapGestureRecognizer.view);
}
0 голосов
/ 31 марта 2012

если у вас есть кнопки, если вы их включите, нажатие на них вызовет метод, который вы связали с действием касания.

Таким образом, каждая кнопка имеет свойство «tag».

свойство tag может дать вам знать, какая кнопка активировала метод.

edit:

если ваша кнопка принадлежит к классу UIButton, вы можете получить тег кнопки через свойство tag, то есть:

mybutton.tag

или

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