UITableView
meldet einen größeren contentSize
als erwartet, wenn Sie einen UISearchBar
verwenden. Bei Null-Zellen wäre die erwartete Inhaltshöhe Null. Stattdessen gibt den folgenden Code 612 in iPhone 4-Zoll-Laufe IOS 7.UITableView contentSize falsch bei Verwendung von UISearchBar
@implementation HPViewController {
UITableView *_tableView;
UISearchBar *_searchBar;
UISearchDisplayController *_searchController;
}
- (void)viewDidLoad
{
[super viewDidLoad];
_tableView = [[UITableView alloc] initWithFrame:self.view.bounds];
_tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:_tableView];
_searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
_searchController = [[UISearchDisplayController alloc] initWithSearchBar:_searchBar contentsController:self];
_searchController.delegate = self;
_searchController.searchResultsDataSource = self;
_tableView.tableHeaderView = _searchBar;
}
- (void)viewDidLayoutSubviews
{
CGSize contentSize = _tableView.contentSize;
NSLog(@"%f", contentSize.height); // 612.000000
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 0; }
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { return nil; };
@end
die Linie kommentierte, dass die Header Ansicht stellt den Code macht Ausgang 0 ist, wie erwartet.
Wenn ich eine leere UIView
als Header zuweisen, wird die contentSize korrekt sein und die Höhe der Kopfzeile entsprechen. Das Problem tritt nur mit UISearchBar
auf.
Gibt es einen Weg um dies zu umgehen? Mache ich etwas falsch?
Ich habe das gleiche Problem heute mit iOS 11.2. Mit 1 Kopfzeile und 1 Zelle in der Tabelle kann ich fast alle Inhalte vom Bildschirm scrollen. Die contentSize hat jedoch die Höhe, die ich unter iOS 10.3.1 erwarte. –