无法在UISearchResultsTableView中滚动到底部

时间:2014-07-17 07:16:01

标签: ios uitableview uisearchbar uisearchdisplaycontroller

我面临一个非常奇怪的问题,我无法在UISearchResultsTableView中滚动到底部,尽管tableView的框架和contentSize是正确的。

只有点击“取消”并输入新的搜索字符串才会发生这种情况。如果我清除此字符串并再次输入,一切正常。如果我再次单击“取消”并输入新字符串,则无法滚动到底部。在我看来,第二次搜索工作,但我遇到第一次搜索或点击UISearchBar中的“取消”按钮后出现问题。

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    [self searchForText:searchString];
    return YES;
}

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil];
}

- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView
{
    tableView.rowHeight = 70;
}

- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}

- (void)keyboardWillHide
{

    UITableView *tableView = [[self searchDisplayController] searchResultsTableView];

    [tableView setContentInset:UIEdgeInsetsZero];

    [tableView setScrollIndicatorInsets:UIEdgeInsetsZero];
}

我还将UISearchDisplayController

分组
- (void)setActive:(BOOL)visible animated:(BOOL)animated
{
    if(self.active == visible) return;

    [self.searchContentsController.navigationController setNavigationBarHidden:YES animated:NO];
    [super setActive:visible animated:animated];
    [self.searchContentsController.navigationController setNavigationBarHidden:NO animated:NO];

    if (visible) {
       [self.searchBar becomeFirstResponder];
    } else {
       [self.searchBar resignFirstResponder];
    }
}

此外,我还使用了一个自定义单元格,就像这样注册了

[self.searchDisplayController.searchResultsTableView
 registerNib:[UINib nibWithNibName:@"..." bundle:nil] forCellReuseIdentifier:@"..."];

1 个答案:

答案 0 :(得分:5)

我解决了这个问题,我认为你需要检查tableview中的tableview contentInset属性" cellForRowAtIndexPath"方法。它不是UIEdgeInsetsZero。我通过设置tableview内容来解决它在" cellForRowAtIndexPath"中的UIEdgeInsetsZero。方法。它有点连线,但它确实有效。