我面临一个非常奇怪的问题,我无法在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:@"..."];
答案 0 :(得分:5)
我解决了这个问题,我认为你需要检查tableview中的tableview contentInset属性" cellForRowAtIndexPath"方法。它不是UIEdgeInsetsZero。我通过设置tableview内容来解决它在" cellForRowAtIndexPath"中的UIEdgeInsetsZero。方法。它有点连线,但它确实有效。