开始编辑后关闭 UISearchBar 中的范围栏
Posted
技术标签:
【中文标题】开始编辑后关闭 UISearchBar 中的范围栏【英文标题】:Turning off the scope bar in UISearchBar once editing has begun 【发布时间】:2011-07-22 21:18:36 【问题描述】:我有一个 UISearchBar 及其各自的搜索显示控制器,通过 InterfaceBuilder 在 xib 文件中布局。搜索栏在 Interface Builder 中配置,未选中“显示范围栏”。但是,一旦在搜索栏中开始输入文本并显示“搜索覆盖”,UISearchBar 就会显示为具有 2 个按钮及其默认“标题”的范围栏。
如何确保在 SearchBar 编辑开始时不显示范围栏?
我已经从管理搜索栏的 ViewController 类中尝试了这些:
- (void)viewDidLoad
UISearchBar *searchBar = self.searchDisplayController.searchBar;
NSLog(@"Scopebar is visible? %@", searchBar.showsScopeBar == YES ? @"YES" : @"NO");
searchBar.showsScopeBar = NO; // Doesn't seem to have an effect
#pragma mark - UISearchBarDelegate methods
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
[searchBar setShowsScopeBar:NO]; // doesn't seem to work either
return YES;
Apple 的示例代码 TableSearch 说明了搜索在搜索开始后具有 4 个按钮范围栏。
【问题讨论】:
【参考方案1】:如果您查看 InterfaceBuilder,您将在“显示范围栏”复选框下方的“范围标题”列表中看到两次“标题”。 InterfaceBuilder 在您选中复选框时添加它们。当您取消选中时,它不会删除它们,但当您单击正在运行的应用程序中的搜索框时,它们仍会出现。在 InterfaceBuilder 中,暂时重新启用“显示范围栏”复选框以允许您选择每个“标题”行并单击“-”按钮将其删除。然后取消选中“显示范围栏”。你不应该再看到它们了。
【讨论】:
杰夫是正确的。从他的评论中我有点不清楚,但是您必须单击“显示范围栏”,删除/添加您想要的任何范围,然后取消单击显示范围栏。出于某种原因,这些默认情况下是不可编辑的。 到目前为止,无需选中/取消选中任何内容,即使未选中“显示范围”,“范围标题”部分似乎也始终显示。以上是关于开始编辑后关闭 UISearchBar 中的范围栏的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 8 中使用 UISearchController,其中 UISearchBar 在我的导航栏中并且有范围按钮?
带有范围栏的 UITableView 上的 UISearchBar 在其他 UI 项上调整自身大小