UISearchDisplayController searchResultsTableView 偏移问题

UISearchDisplayController 有个坑,如果UISearchBar 不是添加在tableView header里面的话,会出现searchResultsTableView 位置偏移问题,网上找了半天看到的答案,mark一下。

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

///解决 由于SearchBar 不是加在tableView header上导致的searchResultsTableView偏移问题。
- (void) keyboardWillHide:(NSNotification *)notification {
    CGFloat height = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
    UITableView *tableView = [_searchDisplayController searchResultsTableView];
    UIEdgeInsets inset;
    [[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 ? (inset = UIEdgeInsetsMake(0, 0, height, 0)) : (inset = UIEdgeInsetsZero);
    [tableView setContentInset:inset];
    [tableView setScrollIndicatorInsets:inset];
}

你可能感兴趣的:(UISearchDisplayController searchResultsTableView 偏移问题)