iOS 解決tableHeaderView新增searchBar後出現的問題

LinXunFeng發表於2019-02-25

無語了,遇到這個問題,雖然解決了,但接下來還是得好好找找問題的原因所在~~

問題重現

未修改前的程式碼

self.tableView.tableHeaderView = self.searchController.searchBar;
複製程式碼

直接將searchBar設定為tableView的tableHeaderView,然後奇葩的現象就出現了,手動下拉重新整理看不到重新整理控制元件,待放手後才會出現,具體看圖

iOS   解決tableHeaderView新增searchBar後出現的問題

放大來看,把MJRefreshNormalHeader給擋住了,而且你下拉多大的偏移量,這個多出來的view的高度就有多大

iOS   解決tableHeaderView新增searchBar後出現的問題

解決方案

方案一

先將searchBar新增到一個view中,再將該view設定為tableView的tableHeaderView

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KSCREEN_WIDTH, 45)];
[view addSubview:self.searchController.searchBar];
    
// 新增 searchbar 到 headerview
self.tableView.tableHeaderView = view
複製程式碼

方案二

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    return self.searchController.searchBar;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 45;
}
複製程式碼

目前我只發現這兩個方法最簡單有效,如果你有其它解決方案,希望能不吝賜教

相關文章