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!

È stato utile?

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)];

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top