Я предполагаю, что вы устанавливаете распознаватель касаний либо на UIWindow
, либо на единственное подпредставление окна. Вы должны дать распознавателю ответвления делегата, и этот делегат должен реализовать gestureRecognizer:shouldReceiveTouch:
.
В этом методе вы хотите вернуть NO
, если касание находится в кнопке или если касание находится в ячейке табличного представления, и YES
в противном случае. Вам нужно пройти вверх по иерархии представлений, начиная с представления, в котором приземлился сенсорный экран, и найти любой из этих классов.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
for (UIView *view = touch.view; view; view = view.superview) {
if ([view isKindOfClass:[UIButton class]])
return NO;
if ([view isKindOfClass:[UITableViewCell class]])
return NO;
}
return YES;
}