iPhone UITableView con UISearchBar e indice di sezione rinfrescante
-
22-07-2019 - |
Domanda
Ho un UITableView con un UISearchBar nella parte superiore di esso.
Uso anche il delegato dell'Indice di sezione per visualizzare ABC ... XYZ sul lato destro.
Il problema si verifica quando faccio clic sulla casella di ricerca e la tastiera si solleva dal basso, l'indice di sezione si schiaccia quindi vengono visualizzati solo A D ... * Z - quando chiudo la ricerca e la tastiera scompare, l'indice rimane in questo "schiacciato" stato fino allo scorrimento o simile.
// animate the searchbar
[UIView beginAnimations:nil context:NULL];
CGRect tempRect = [[self searchBar] frame];
tempRect.size.width = 320-kMarginRight;
[[self searchBar] setFrame:tempRect];
[UIView commitAnimations];
// animate the search index back into view
for (UIView *view in [[self tableView] subviews]) {
if ([view respondsToSelector:@selector(moveIndexIn)]) {
MovableTableViewIndex *index = (MovableTableViewIndex*)view;
[index moveIndexIn];
}
}
// try a whole load of stuff to try and get the section indexes to draw again properly
// none of which work!
[searchBar setText:@""];
[searchBar resignFirstResponder];
letUserSelectRow = YES;
searching = NO;
[[self navigationItem] setRightBarButtonItem:nil];
[[self tableView] setScrollEnabled:YES];
[[self tableView] reloadData];
[[self tableView] flashScrollIndicators];
[[self tableView] sizeToFit];
[[self tableView] zoomScale];
[[self tableView] reloadSectionIndexTitles];
Le mie domande sono: qualcuno ha visto questo comportamento? C'è un modo per ridisegnare l'indice di sezione su RHS ( [[self tableView] reloadData]
non fa il trucco)
Grazie mille!
Soluzione
Dovresti disabilitare il disegno degli indici quando la ricerca è attivata del tutto. Restituisci semplicemente zero nel tuo delegato, qualcosa del genere:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { if ([self.searchDisplayController isActive]) return nil; ... }
Altri suggerimenti
Potresti provare a usare
- (void)flashScrollIndicators
quale aggiorna la barra di scorrimento e si spera anche l'indice di sezione?
Funziona benissimo !!!
[searchBar setContentInset: UIEdgeInsetsMake (5, 0, 5, 35)];