Неправильный тег UIButton для распознавателя жестов

Я знаю, что уже задано много вопросов, но я пробовал их все, и, не в состоянии решить свою проблему, я отправляю свой вопрос. Сначала я задал следующие вопросы:

1) Как получить button.tag через longPressGestureRecognizer?

2) Долгосрочное мероприятие UIButton

В моем приложении у меня есть 12 UIButtons в моем xib. При длинном нажатии UIButton я вызываю этот метод. Использование свойства gesture.view.tag всегда дает мне тот же самый тег (i.e) каждый раз, когда я нажимаю на другой UIButtons.

- (IBAction)longPress:(id)sender {

     UILongPressGestureRecognizer* gesture=(UILongPressGestureRecognizer*)sender;
     NSLog(@"Tag---> %d",gesture.view.tag);
  }

Мой xib выглядит примерно так:

enter image description here

Обновление 1:

Прежде чем кто-то запутается с xib, я должен сказать, что UIButtons установлены в пользовательский тип, поэтому они невидимы в UIImageView.

Ответ 1

Похоже, что UIGestureRecognizer может отслеживать несколько видов, но не сообщает, что отслеживает несколько видов. Таким образом, когда вы проверяете свойство view объекта UIGestureRecognizer, оно устанавливается на последнее представление, в которое был добавлен распознаватель.

В docs:

Атрибут распознавания жестов работает с касаниями, подвергнутыми ударам, к конкретному виду и всем этим представлениям. Таким образом, это должно быть связано с этой точкой зрения. Чтобы сделать эту связь, вы должны вызвать метод UIView addGestureRecognizer:. Устройство распознавания жестов не участвует в цепочке ответчиков просмотров.

Решение в этом случае должно иметь распознаватель жестов для каждого представления, которое необходимо распознать, и связать их с одним и тем же селектором делегатов.

Примечание: этот вопрос (и мой ответ) возник в чат-чате NSChat, 20 марта 2013 года. Было принято решение разместить здесь в будущем ссылка.суб >