Несмотря на то, что я совершенно уверен, что вы поступите неправильно, добавив в UIButton распознаватель жестов двойным касанием, вы все равно сможете выполнить требуемую задачу, которая не должна быть слишком большой. работать для вас.
Вы сделали комментарий
и как я могу вспомнить, если я создаю, скажем, 100 кнопок
на один из ответов, который подчеркивает, в чем заключается проблема, вызывающая ваш SIGBART. UIGestureRecognizer не имеет свойства тега.
Вот что вы могли бы сделать, это перебрать все подпредставления вашего [собственного представления] и найти тот, который имеет тот же UIGestureRecognizer, это не самое симпатичное решение, и чем больше подпредставлений у вас, тем дольше будет выполняться цикл , Но это будет делать то, что вы, похоже, ищете, так что если вы добавляете.
В вашей функции handleDoubleTap вы можете сделать следующее
-(void) handleDoubleTap:(UITapGestureRecognizer *)sender
{
if(sender.state == UIGestureRecognizerStateEnded)
{
int iButtonTag = -1 //This is important later to escape the below for loop as we don't need to needlessly go around in circles
for(UIView* psubView in [[self view] subviews])
{
if( [psubView isKindOfClass:[UIButton class]] )
{
UIButton* pButton = (UIButton*)psubView;
for(UIGestureRecognizer* pGesture in [pButton gestureRecognizers] )
{
if( pGesture == sender )//this is the button we're after
{
iButtonTag = [pButton tag];
break;
}
}
if( iButton != -1 )//found what we came for
{
break;
}
}
}
//do what ever it was you needed to do now that you have the views tag, or you could have kept a reference to the button etc.
}
}
Это должно решить вашу проблему. В качестве альтернативы, если вы собираетесь добавлять кнопки в подпредставления подпредставлений, было бы лучше отслеживать ваши UIButton-ы в NSMutableArray, вы бы сделали это, создав свойство класса (или переменную-член) и добавив к нему кнопки, используя 'addObject:' функция NSMutableArray. Тогда вместо строки
for(UIView* psubView in [[self view] subviews])
выше, вы можете обменять это на
for( UIButton* pButton in m_pMutableButtonArray )
где "m_pMutableButtonArray" - это имя переменной, которую вы дали своему NSMutableArray, в котором вы хранили UIButtons. Это также означает, что вы бы покончили со следующим тестом isKindOfClass в следующей строке.
Это должно решить вашу проблему.