gpt4 book ai didi

cocoa-touch - 搜索栏与 iOS 11 上的状态栏重叠

转载 作者:行者123 更新时间:2023-12-03 16:36:20 24 4
gpt4 key购买 nike

我使用 UISearchController 和 UISearchResultsController 来实现搜索功能。

MySearchResultsController 实现了 UISearchResultsUpdating 和 UISearchBarDelegate:

override open func viewDidLoad() {
super.viewDidLoad()
self.edgesForExtendedLayout = [];
self.automaticallyAdjustsScrollViewInsets = false;
}

我在 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;
}

这在以前工作得很好,但在 iOS 11 下,一旦我点击它,搜索栏就会与状态栏重叠(见截图)。我尝试了很多不同的方法来让它正确显示,但还没有找到解决方案。

enter image description here

最佳答案

我发现问题是呈现 View Controller 也设置

override open func viewDidLoad() {
super.viewDidLoad()
self.edgesForExtendedLayout = [];
self.automaticallyAdjustsScrollViewInsets = false;
}

我必须这样做,因为表格 View 实际上并没有一直延伸到顶部。

我在我的呈现 View 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 的错误,或者至少是一个奇怪的行为......

关于cocoa-touch - 搜索栏与 iOS 11 上的状态栏重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com