2012-07-30 1 views
6

Я искал часы в Google и Stackoverflow, пробовал их, но не повезло.Как вызвать метод didSelectRowAtIndexPath с UITapGestureRecognizer?

У меня есть UITableView tblDepartment и UISearchBar studentSearch над ним.

добавить UITapGestureRecognizer, чтобы закрыть клавиатуру от studentSearch текстового поля, когда пользователи нажмите вне окна поиска:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
[self.tblDepartment addGestureRecognizer:gestureRecognizer]; 

- (void)hideKeyboard 
{ 
    [studentSearch resignFirstResponder]; 
} 

После этого метод didSelectRowAtIndexPath:(NSIndexPath *)indexPath не вызывается больше, когда я выбираю строку в tblDepartment. Я знаю, что причина gestureRecognizer.

Итак, как скрыть клавиатуру и разрешить пользователю выбирать строку?

Я попробовал этот код, но он не работает:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isDescendantOfView:tblDepartment]) { 
     return NO; 
    } 
    return YES; 
} 
+0

Не удалось удалить распознаватель жестов и отменить первый ответчик из 'tableView: didSelectRowAtIndexPath:' вместо этого? – dasblinkenlight

+1

Попробуйте удалить распознаватель жестов после 'resignFirstResponder' – ohr

+0

@dasblinkenlight: Спасибо за ваш комментарий. «TblDepartment» имеет около 7 строк, а клавиатура перекрывает их при отображении. Я хочу, чтобы пользователи могли выбирать строки, если они не хотят искать. Поэтому, когда они выходят за пределы поисковой системы, клавиатура отклоняется, и они могут выбирать нижние строки. –

ответ

14

Установите жест распознаватель cancelsTouchesInView свойство NO, это ДА по умолчанию, он предотвращает штрихи достичь основные взгляды, если GR признает его жест ,

+1

Отличное решение. Спасибо. '[gestureRecognizer setCancelsTouchesInView: NO];' и он работает! –

+0

Спасибо, что вы спасли мое время :) Я написал, как этот tap.cancelsTouchesInView = NO; –