首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索栏与iOS 11上的状态栏重叠

搜索栏与iOS 11上的状态栏重叠
EN

Stack Overflow用户
提问于 2017-09-19 08:41:23
回答 3查看 4.6K关注 0票数 12

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

MySearchResultsController实现了UISearchResultsUpdating和UISearchBarDelegate:

代码语言:javascript
复制
override open func viewDidLoad() {
    super.viewDidLoad()
    self.edgesForExtendedLayout = [];
    self.automaticallyAdjustsScrollViewInsets = false;
}

我在tableHeader中像下面这样在MyTableViewController中显示搜索栏:

代码语言:javascript
复制
- (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下,搜索栏与状态栏在我一点击它时就会重叠(见屏幕截图)。为了让它正确显示,我尝试了很多不同的方法,但还没有找到解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-30 06:54:11

我发现问题在于呈现视图控制器还设置了

代码语言:javascript
复制
override open func viewDidLoad() {
    super.viewDidLoad()
    self.edgesForExtendedLayout = [];
    self.automaticallyAdjustsScrollViewInsets = false;
}

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

在我的演示视图Controller中,我这样解决了这个问题:

代码语言:javascript
复制
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,或者至少是一个奇怪的行为…。

票数 3
EN

Stack Overflow用户

发布于 2017-10-19 12:30:58

这就是对我有用的东西:

代码语言:javascript
复制
    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
    }
票数 1
EN

Stack Overflow用户

发布于 2017-09-22 11:34:59

我设法通过子类UISearchController来解决这个问题。我的答案是斯威夫特,但也许这些原则也适用于目标-c。请看我的答案:https://stackoverflow.com/a/46339336/8639272

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46295761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档