He buscado durante horas en Google y Stackoverflow, las probé pero no tuve suerte.Cómo llamar al método didSelectRowAtIndexPath con UITapGestureRecognizer?
Tengo una UITableView tblDepartment
y una UISearchBar studentSearch
encima de ella.
agrego un UITapGestureRecognizer
para ocultar el teclado de studentSearch
cuadro de texto cuando los usuarios tocan 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
no se llama más cuando selecciono fila de tblDepartment
. Sé que gestureRecognizer
es la razón.
Entonces, ¿cómo puedo ocultar el teclado y todavía permitir al usuario seleccionar la fila?
yo probamos este código, pero no funcionó:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isDescendantOfView:tblDepartment]) {
return NO;
}
return YES;
}
¿Podría eliminar el reconocedor de gestos y renunciar al primer respondedor de 'tableView: didSelectRowAtIndexPath:' en su lugar? – dasblinkenlight
Intente eliminar su reconocedor de gestos después del 'resignFirstResponder' – ohr
@dasblinkenlight: Gracias por su comentario. El 'tblDepartment' tiene alrededor de 7 filas y el teclado se superpone cuando se muestra. Quiero que los usuarios puedan seleccionar filas si no quieren buscar :) Entonces, cuando tocan fuera del cuadro de búsqueda, el teclado se descarta y pueden seleccionar las filas inferiores. –