Табличное представление с 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

надеюсь, что это будет работать для вас

скачать демонстрационный проект

Другие вопросы по тегам