UITableView调整内容插入不统一第一滚动

时间:2018-08-10 22:42:56

标签: ios objective-c uitableview

在尝试使用searchBar创建一个tableview时,遇到了我的tableView自动调整contentInset的问题,但是直到第一次滚动时才调整。在另一个没有viewBar的tableView上,问题不存在。 searchController的设置几乎从Apples TableSearchWithUISearchController示例中删除。 所以我的代码在viewDidLoad中被TableViewController调用:

resultsController = [[ResultConstantTVController alloc] init];
searchController = [[BaseSearchController alloc] initWithSearchResultsController:resultsController];
searchController.searchResultsUpdater = self;
searchController.delegate = self;

self.navigationItem.searchController = searchController;
self.navigationItem.hidesSearchBarWhenScrolling = NO;
[self.searchBar setBarStyle:UIBarStyleBlackTranslucent];
[self.searchBar setKeyboardAppearance:UIKeyboardAppearanceDark];
[self.searchBar setAutocapitalizationType:UITextAutocapitalizationTypeNone];
self.definesPresentationContext = YES;
self.dimsBackgroundDuringPresentation = NO;

我已经尝试将tableViews contentInsetAdjustmentBehavior手动设置为自动,但是直到第一次滚动时它仍然不会生效。

在firstScroll之前 Before first Scroll

第一次滚动后 After first scroll

P.S。我正在使用Xcode,macOS和iOS的Beta版。

更新:

我设法通过致电

绕过了问题
[self.navigationController.view layoutSubviews];

出现在TableViewController的viewDidAppear中。

1 个答案:

答案 0 :(得分:0)

  

我已经尝试过将tableViews contentInsetAdjustmentBehavior设置为自动

是正确的,但还不够。通常也可以通过将表视图的alwaysBounceVertical设置为YES来解决此类问题。您需要在视图控制器生命周期的早期就这样做。