Табличное представление с UITapGestureRecognizer
Привет я занимаюсь разработкой небольшого приложения для IOS, в котором я хочу отобразить панель поиска и под ней табличное представление. В котором я хочу скрыть клавиатуру, когда пользователь нажимает снаружи. По этой причине я использую функцию распознавания касаний, но из-за этого мое табличное представление перестает слушать выбор строки.
Вот мой код
//inside view did load
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
-(void)dismissKeyboard {
[_searchBar resignFirstResponder];
}
но из-за этого мой выбор строки представления таблицы отключается. это значит didSelectRowAtIndexPath
никогда не звонят. У любого есть решение для этого. Нужна помощь. Спасибо.
4 ответа
Вы должны реализовать UIGestureRecognizerDelegate и добавить следующее:
// внутренний вид загрузил
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
// UIGestureRecognizerDelegate методы
#pragma mark UIGestureRecognizerDelegate methods
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isDescendantOfView:yourTableView]) {
// Don't let selections of auto-complete entries fire the
// gesture recognizer
return NO;
}
return YES;
}
Попробуйте добавить эту строку кода, это решит вашу проблему.
tap.cancelsTouchesInView = NO;
На панели "Утилиты" есть "Панель поиска и Контроллер поиска", которая звучит так, словно она вам подойдет. Это хороший учебник, который объясняет, как его реализовать. Таким образом, у вас больше не будет проблем с клавиатурой.
Нет необходимости использовать TapGestureRecognizer. Используйте SearchBarDisplayController