¿Cómo llamar al método didSelectRowAtIndexPath con UITapGestureRecognizer?

He buscado durante horas en Google y Stackoverflow, los probé pero no tuve suerte.

Tengo un UITboView tblDepartment y un UISearchBar studentSearch encima de él.

Agrego un UITapGestureRecognizer para descartar el keyboard del textbox studentSearch cuando los usuarios studentSearch fuera del cuadro de búsqueda:

 UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; [self.tblDepartment addGestureRecognizer:gestureRecognizer]; - (void)hideKeyboard { [studentSearch resignFirstResponder]; } 

Después de eso, el método didSelectRowAtIndexPath:(NSIndexPath *)indexPath ya no se llama cuando selecciono la fila en tblDepartment . Sé que gestureRecognizer es la razón.

Entonces, ¿cómo puedo ocultar el keyboard y permitir que el usuario select la fila?

Probé este código pero no funcionó:

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

Establezca la propiedad cancelsTouchesInView del reconocedor de gestos en NO, es SÍ de forma pnetworkingeterminada, evita que los toques scopen las vistas subyacentes si el GR reconoce su gesto.