6

我有一个 UITableView,顶部有一个 UISearchBar。

我还使用 Section Index 代理在右侧显示 ABC...XYZ。

当我单击搜索框并且键盘从底部出现时出现问题,部分索引被挤压,因此只显示 A D ...*Z - 当我关闭搜索并且他们的键盘消失时,索引停留在这个“压扁”状态,直到我滚动或类似。

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

我的问题是,有人见过这种行为吗?有没有办法重新绘制 RHS 上的部分索引([[self tableView] reloadData]不起作用)

太感谢了!

4

3 回答 3

4

您应该在完全激活搜索时禁用索引绘制。只需在您的委托中返回 nil,如下所示:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
  if ([self.searchDisplayController isActive]) 返回零;

  ...
}
于 2009-10-02T23:40:23.547 回答
2

你可以尝试使用

- (void)flashScrollIndicators

哪个刷新滚动条并希望也刷新部分索引?

于 2009-05-12T08:19:22.213 回答
0

它工作正常!

[searchBar setContentInset:UIEdgeInsetsMake(5, 0, 5, 35)];

于 2010-05-05T18:50:26.647 回答