Самый простой способ решить эту проблему - это:
UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[tapRec setCancelsTouchesInView:NO];
Это позволяет UIGestureRecognizer
распознавать касание и также передавать касание следующему респонденту.Непреднамеренное последствие этого метода, если у вас есть UITableViewCell
на экране, который выдвигает другой контроллер представления.Если пользователь коснется строки, чтобы закрыть клавиатуру, клавиатура и нажатие будут распознаны.Я сомневаюсь, что это именно то, что вы намереваетесь, но этот метод подходит для многих ситуаций.
Кроме того, подробно остановившись на ответе Роберта, если у вас есть указатель на рассматриваемый вид таблицы, вы можете напрямую сравнить его класс вместонеобходимо преобразовать в строку и надеяться, что Apple не изменит номенклатуру:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch
{
if([touch.view class] == tableview.class){
return //YES/NO
}
return //YES/NO
}
Помните, вы также должны объявить UIGestureRecognizer
, чтобы иметь делегата с этим кодом.