gpt4 book ai didi

iOS9 Scope Bar出现在Search Bar后面或旁边

转载 作者:行者123 更新时间:2023-12-02 03:14:53 28 4
gpt4 key购买 nike

我有一个自定义的 UITableViewController,其中 UISearchController 设置为 tableHeaderView,如下所示,在 viewDidLoad() 中:

    definesPresentationContext = true
searchController.searchResultsUpdater = self
searchController.searchBar.delegate = self
searchController.dimsBackgroundDuringPresentation = false
if #available(iOS 9.1, *) {
searchController.obscuresBackgroundDuringPresentation = false
}
searchController.searchBar.barStyle = .Black
searchController.searchBar.searchBarStyle = .Default
searchController.searchBar.keyboardAppearance = .Dark
searchController.searchBar.scopeButtonTitles = ["Title 1", "Title 2", "Title 3", "Title 3", "Title 3", "Title 3"]
tableView.tableHeaderView = searchController.searchBar

当 UITableViewController 首次加载时,范围栏在搜索栏​​下方可见并占据整个宽度: enter image description here

触摸搜索栏内部后,范围栏显示在搜索栏旁边: enter image description here

点击取消后,搜索栏正确显示,下面没有范围栏,尽管搜索栏上的后续触摸仍然显示它旁边的范围栏: enter image description here

我试过以下方法:

  • 将 searchBarStyle 从 .Minimal 更改为 .Default
  • searchBartableHeaderView 上调用 sizeToFit(),在 viewDidLoad() 和 viewWillAppear() 中都尝试过
  • viewWillAppear() 中将 searchBartableHeaderView 的框架高度显式设置为 88
  • proposed solutions here
  • 清除所有构建、清理和重建。

到目前为止,对外观或行为没有任何影响。我想要搜索栏下方的范围栏,并且它最初不会出现在搜索栏后面。是 UISearchController 坏了还是我只是在做一些蠢事。

最佳答案

这是 UISearchBar 中的一个错误,您应该为它创建一个雷达。

解决方法是在设置 scopeButtonTitles 之后添加一些代码:

UIView *scopeBarContainer = [[[searchController.searchBar.subviews firstObject] subviews] firstObject];
for ( UIView *view in scopeBarContainer.subviews ) {
if ( [view isKindOfClass:[UISegmentedControl class]] ) {
scopeBarContainer.hidden = YES;
break;
}
}

关于iOS9 Scope Bar出现在Search Bar后面或旁边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37583166/

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