5

UITableViewIndexSearch在 iOS7 之前,我们通过添加到部分索引标题的前面,在 UITableView 索引的顶部添加了一个放大镜图标。

通过拖动到section index中的放大镜图标,tableView可以滚动到searchBar,代码如下:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {

    NSInteger resultIndex = [self getSectionForSectionIndex:index];

    // if magnifying glass
    if (resultIndex == NSNotFound) {
        [tableView setContentOffset:CGPointZero animated:NO];
        return NSNotFound;
    }
    else {
        return resultIndex;
    }
}

但是在 iOS 7 中,这只会滚动到第一部分而不是搜索栏。

4

1 回答 1

9

为了解决这个问题,我们调整了内容偏移量以考虑 iOS 7 中引入的 UITableView 的内容插入:CGPointMake(0.0, -tableView.contentInset.top)

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {

    NSInteger resultIndex = [self getSectionForSectionIndex:index];

    // if magnifying glass
    if (resultIndex == NSNotFound) {
        [tableView setContentOffset:CGPointMake(0.0, -tableView.contentInset.top)];
        return NSNotFound;
    }
    else {
        return resultIndex;
    }
}
于 2013-09-30T11:32:57.267 回答