2014-09-11 3 views
0

Привет Я разрабатываю небольшое приложение IOS, в котором хочу отобразить панель поиска и под ней табличный вид. В котором я хочу скрыть клавиатуру, когда пользователь нажимает на нее. По этой причине я использую распознаватель tap, но из-за этого мой вид таблицы перестает слушать выбор строки.табличный вид с UITapGestureRecognizer

Вот мой код

//inside view did load 
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] 
           initWithTarget:self 
           action:@selector(dismissKeyboard)]; 

[self.view addGestureRecognizer:tap]; 

-(void)dismissKeyboard { 
    [_searchBar resignFirstResponder]; 
} 

, но из-за этого мой выбор строки в табличном получить отключить. это означает, что didSelectRowAtIndexPath никогда не вызываются. У любого есть решение для этого. Нужна помощь. Спасибо .

ответ

0

Вы должны осуществлять 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; 
} 
1

Попробуйте добавить эту строку кода, это решит вашу проблему ..

tap.cancelsTouchesInView = NO; 
0

Существует «Строка поиска и поиска Контроллер дисплея» на панели Utilities, которая звучит, как это было бы идеальным для вас. This - хороший учебник, в котором объясняется, как его реализовать. Таким образом, у вас больше не будет проблем с клавиатурой.