Если все они являются подпредставлениями одного и того же представления, вы можете выполнить итерацию по parentView.subviews
и найти их таким образом.Примерно так:
for (UIView *v in parentView.subviews) {
if ([v isKindOfClass:[MyViewClass class]]) {
// remove recognizer here
}
}
Другой, более эффективный вариант - иметь флаг в вашем контроллере представления, который вы устанавливаете при срабатывании первого распознавателя, и использовать для короткого замыкания любых будущих вызовов обработчика распознавателя.Как то так:
@property (nonatomic) BOOL shouldRespondToEvent;
@synthesize shouldRespondToEvent=_shouldRespondToEvent;
- (void)viewDidLoad {
[super viewDidLoad];
self.shouldRespondToEvent = YES;
// other viewDidLoad stuff here
}
- (void)gestureHandler:(UIGestureRecognizer*)recognizer {
if (!self.shouldRespondToEvent)
return;
self.shouldRespondToEvent = NO;
// rest of handler code here
}