Ho cercato per ore su Google e StackOverflow, li ho provati ma senza fortuna.Come chiamare il metodo didSelectRowAtIndexPath con UITapGestureRecognizer?
Ho un UITableView tblDepartment
e una UISearchBar studentSearch
sopra di esso.
aggiungo un UITapGestureRecognizer
per chiudere la tastiera dal studentSearch
testo quando gli utenti toccano al di fuori della casella di ricerca:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.tblDepartment addGestureRecognizer:gestureRecognizer];
- (void)hideKeyboard
{
[studentSearch resignFirstResponder];
}
Dopo di che, il metodo didSelectRowAtIndexPath:(NSIndexPath *)indexPath
non è chiamato più quando seleziono fila in tblDepartment
. So che il motivo è gestureRecognizer
.
Quindi, come posso nascondere la tastiera e consentire all'utente di selezionare la riga?
Ho provato questo codice, ma non ha funzionato:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isDescendantOfView:tblDepartment]) {
return NO;
}
return YES;
}
Si può rimuovere il riconoscitore di gesti e abbandonare il primo risponditore da 'tableView: didSelectRowAtIndexPath:'? – dasblinkenlight
Prova a rimuovere il tuo riconoscimento di gesto dopo 'resignFirstResponder' – ohr
@dasblinkenlight: Grazie per il tuo commento. Il 'tblDepartment' ha circa 7 file e la tastiera si sovrappone quando vengono visualizzate. Voglio che gli utenti siano in grado di selezionare le righe se non vogliono effettuare la ricerca :) Quindi quando toccano fuori dalla casella di ricerca, la tastiera viene chiusa e possono selezionare le righe inferiori. –