Я написал довольно длинный метод действий, связанный с несколькими UIButton
s, и теперь я понял, что хотел бы иметь что-то другое, если я дважды нажму одну из кнопок , Таким образом, я устанавливаю два жеста распознавателей:Получение UIButton, который был двойным нажатием из метода действия UIGestureRecognizer
UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)];
UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwice:)];
tapOnce.numberOfTapsRequired = 1;
tapTwice.numberOfTapsRequired = 2;
[tapOnce requireGestureRecognizerToFail:tapTwice];
[self.mybutton addGestureRecognizer:tapOnce];
[self.mybutton addGestureRecognizer:tapTwice];
тогда я реализую методы:
- (void)tapOnce:(UIGestureRecognizer *)gesture{
//Do what you were already doing
}
- (void)tapTwice:(UIGestureRecognizer *)gesture{
// Some new functionality
}
сейчас, у меня нет проблемы с новой функциональностью. Где я застрял, я пытаюсь получить метод tapOnce:
, чтобы сделать то, что моя кнопка уже делала. Мне нужно знать, какая кнопка была прослушиваются, поэтому я не могу использовать это:
[myButton sendActionsForControlEvents: UIControlEventTouchUpInside];
Я также попробовал старое:
for (button in myArrayOfButtons){
[button sendActionsForControlEvents: UIControlEventTouchUpInside];
}
не повезло либо.
Тогда я пошел по пути на самом деле создает отдельный метод для осуществления моей кнопки, так что было:
- (IBAction)buttonPressed:(id)sender {
//my functionality...
}
стали:
- (IBAction)buttonPressed:(id)sender {
[self myMethodwithSender:sender];
}
-(void)myMethodwithSender: (id)sender{
// my functionality
}
Так что работал сам по себе, но когда Я пытаюсь вставить кран один раз и дважды в игру, я застрял. Я попытался положить мой новый метод в методе для отвода раз:
- (void)tapOnce:(UIGestureRecognizer *)gesture{
[self myMethodwithSender:sender];
}
но, конечно, нет отправителя в этом методе, так что не работает
Затем я попытался изменить это (верно?):
UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)];
к этому:
UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myMethodwithSender:)];
Что не работает. Поэтому я не знаю, как это сделать. Любые предложения приветствуются.
Что значит «это на самом деле множество кнопок», и что означает «Не повезло», ? Что происходит? –
В моем проекте много кнопок, и все они подключены к этому методу. Затем, в зависимости от того, на который вы нажимаете (отсюда важность «отправителя») появляется другое изображение и т. Д. ... когда я пытаюсь: кнопка UIButton *; for (кнопка в self.allTheButtons) {[self myMethodwithSender: отправитель];} в методе tapOnce. Я получаю сообщение об ошибке «использование необъявленного идентификатора отправителя». – Paul
В этом случае ответ Лу Франко - это именно то, что вам нужно. –