我使用一个UISearchController和一个UISearchResultsController来实现搜索功能。
MySearchResultsController实现了UISearchResultsUpdating和UISearchBarDelegate:
override open func viewDidLoad() {
super.viewDidLoad()
self.edgesForExtendedLayout = [];
self.automaticallyAdjustsScrollViewInsets = false;
}我在tableHeader中像下面这样在MyTableViewController中显示搜索栏:
- (void)viewDidLoad {
[super viewDidLoad];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController];
self.searchController.searchResultsUpdater = self.searchResultsController;
self.searchController.searchBar.delegate = self.searchResultsController;
self.searchController.searchBar.scopeButtonTitles = @[NSLocalizedString(@"SEARCH_SCOPE_TEMPERATURES", nil), NSLocalizedString(@"SEARCH_SCOPE_KNOWHOW", nil)];
self.tableView.tableHeaderView = self.searchController.searchBar;
self.definesPresentationContext = YES;
}这一点以前很完美,但是在iOS 11下,搜索栏与状态栏在我一点击它时就会重叠(见屏幕截图)。为了让它正确显示,我尝试了很多不同的方法,但还没有找到解决方案。

发布于 2017-09-30 06:54:11
我发现问题在于呈现视图控制器还设置了
override open func viewDidLoad() {
super.viewDidLoad()
self.edgesForExtendedLayout = [];
self.automaticallyAdjustsScrollViewInsets = false;
}我必须这样做,因为表视图实际上并没有一直延伸到顶部。
在我的演示视图Controller中,我这样解决了这个问题:
override open func viewDidLoad() {
super.viewDidLoad()
self.automaticallyAdjustsScrollViewInsets = false;
if (@available(iOS 11.0, *)) {
//NSLog(@"iOS 11.0");
} else {
self.edgesForExtendedLayout = UIRectEdgeNone;
//NSLog(@"iOS < 11.0");
}
}似乎是iOS 11的一个bug,或者至少是一个奇怪的行为…。
发布于 2017-10-19 12:30:58
这就是对我有用的东西:
override func viewDidLoad() {
// to fix the Status Bar Issue:
if #available(iOS 11.0, *) {
definesPresentationContext = true
}
// You'll also need this properties on your Search Bar:
searchController = UISearchController.init(searchResultsController: nil)
searchController?.searchResultsUpdater = self
searchController?.hidesNavigationBarDuringPresentation = false
}发布于 2017-09-22 11:34:59
我设法通过子类UISearchController来解决这个问题。我的答案是斯威夫特,但也许这些原则也适用于目标-c。请看我的答案:https://stackoverflow.com/a/46339336/8639272
https://stackoverflow.com/questions/46295761
复制相似问题