Как получить button.tag через longPressGestureRecognizer?
Я динамически добавляю кнопки изображения в некоторый scrollview. Все они указывают на одного длинного пальца. Теперь, как мне получить, какая кнопка была нажата? Тег [sender] дает мне тег longGestureRecognizer, который я добавил к кнопке, и я не могу вручную установить этот тег.
for (...) {
UIButton *button = [[UIButton alloc] init];
button.tag = w + h * 3;
[button addTarget:self action:@selector(imageButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
UILongPressGestureRecognizer *gest = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(imageButtonLongPress:)];
gest.minimumPressDuration = 1;
gest.delegate = self;
[button addGestureRecognizer:gest];
[gest release];
[scrollView addSubview:button];
[button release];
}
- (void) imageButtonLongPress:(id)sender {
// how to get button tag here?
}
Ответы
Ответ 1
В UIGestureRecognizer
есть свойство view
, которое возвращает представление, к которому прикреплен распознаватель. Думаю, это ваш лучший выбор.
- (void) imageButtonLongPress:(id)sender {
UIGestureRecognizer *recognizer = (UIGestureRecognizer*) sender;
int tag = recognizer.view.tag;
}
Ответ 2
В вашем действии вам нужно набирать команду отправителя в жесте, а затем набирать его вид на кнопку, а затем вводить тег кнопки как -
UILongPressGestureRecognizer *gest = (UILongPressGestureRecognizer *)sender;
UIButton *button = (UIButton*)[gest view];
NSLog(@"%d",[button tag]);