Если вы хотите обработать поведение в ViewController, типичным решением является добавление @protocol
в ваш пользовательский класс кнопок, который определяет методы для обработки одиночных и двойных нажатий.
т.е. в вашем CustomButton.h
@protocol CustomButtonDelegate <NSObject>
- (void)button:(CustomButton *)button tappedWithCount:(int)count;
@end
Затем у вас есть делегат, который реализует этот протокол в вашем пользовательском классе кнопок и вызывает эти методы для делегата, когда обнаружены ваши касания.
т.е. в вашем CustomButton.h
id <CustomButtonDelegate> _delegate;
в ваших методах в реализации:
- (void) handleTap: (UITapGestureRecognizer *) sender {
NSLog(@"single tap");
[self.delegate button:self tappedWithCount:1];
}
- (void) handleDoubleTap :(UITapGestureRecognizer *) sender {
NSLog(@"double tap");
[self.delegate button:self tappedWithCount:2];
}
Ваш View Controller реализует методы протокола и устанавливает себя в качестве делегата пользовательской кнопки.
т. в вашей реализации ViewControllers
- (void)button:(CustomButton *)button tappedWithCount:(int)count {
if (count == 1) {
[self resetAllFields];
} else if (count == 2) {
[self populateAllFields];
}
}
Поскольку вы используете Interface Builder для установки пользовательской кнопки, вы можете назначить свой контроллер представления в качестве делегата там или в ViewDidLoad.