Временно решил проблему следующим образом:
RoomSchemeView.h:
/// необрабатываемая зона, в этой области тапы не обрабатываются
@property (nonatomic, assign) CGRect unprocessedRect;
RoomSchemeView.m
- (void)tap:(UIGestureRecognizer *)gr
{
CGPoint point = [gr locationInView:self];
// проверяем находится ли точка в необрабатываем зоне
if (!CGRectEqualToRect(self.unprocessedRect, CGRectZero) && CGRectContainsPoint(self.unprocessedRect, point)) {
NSLog(@"tap with point %@ in unprocessed rect %@", NSStringFromCGPoint(point), NSStringFromCGRect(self.unprocessedRect));
return;
}
...
}
RoomSchemeViewController.m:
- (void)showTableView
{
if (!self.tableIsVisible) {
self.tableView.frame = CGRectMake(-self.tableView.frame.size.width, self.tableView.frame.origin.y, self.tableView.frame.size.width, self.tableView.frame.size.height);
[UIView animateWithDuration:.3 animations:^{
self.tableView.frame = CGRectMake(0, self.tableView.frame.origin.y, self.tableView.frame.size.width, self.tableView.frame.size.height);
} completion:^(BOOL finished) {
self.tableIsVisible = YES;
self.roomSchemeView.unprocessedRect = self.tableView.frame;
}];
}
}
- (void)hideTableView
{
if (self.tableIsVisible) {
self.tableView.frame = CGRectMake(0, self.tableView.frame.origin.y, self.tableView.frame.size.width, self.tableView.frame.size.height);
[UIView animateWithDuration:.3 animations:^{
self.tableView.frame = CGRectMake(-self.tableView.frame.size.width, self.tableView.frame.origin.y, self.tableView.frame.size.width, self.tableView.frame.size.height);
} completion:^(BOOL finished) {
self.tableIsVisible = NO;
self.roomSchemeView.unprocessedRect = CGRectZero;
}];
}
}