Ste*_*fan 12 cocoa-touch uisearchbar ios11
我正在使用UISearchController和UISearchResultsController来实现搜索功能.
MySearchResultsController实现UISearchResultsUpdating和UISearchBarDelegate:
override open func viewDidLoad() {
super.viewDidLoad()
self.edgesForExtendedLayout = [];
self.automaticallyAdjustsScrollViewInsets = false;
}
Run Code Online (Sandbox Code Playgroud)
我在MyTableViewController中像tableHeader一样显示搜索栏:
- (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;
}
Run Code Online (Sandbox Code Playgroud)
这之前完美无缺,但在iOS 11下,一旦我点击它,搜索栏就会与状态栏重叠(见截图).我尝试了很多不同的东西来让它正确显示但还没有找到解决方案.
我发现问题是呈现视图控制器也设置
\n\noverride open func viewDidLoad() {\n super.viewDidLoad()\n self.edgesForExtendedLayout = [];\n self.automaticallyAdjustsScrollViewInsets = false;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我必须这样做,因为表视图实际上并没有一直延伸到顶部。
\n\n我在演示视图控制器中解决了这个问题:
\n\noverride open func viewDidLoad() {\n super.viewDidLoad()\n self.automaticallyAdjustsScrollViewInsets = false;\n if (@available(iOS 11.0, *)) {\n //NSLog(@"iOS 11.0");\n } else {\n self.edgesForExtendedLayout = UIRectEdgeNone;\n //NSLog(@"iOS < 11.0");\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n似乎是 iOS 11 的错误,或者至少是一个奇怪的行为\xe2\x80\xa6
\n