我正在尝试获取搜索栏,它的范围在导航栏中,就像视图第一次出现的方式一样。如果只需将UISearchBar拖放到界面构建器中的表视图控制器上,它将像表头一样放置在表格中。然后,当你点击它时,它会动画进入我之后的编队。问题是我希望它无需任何点击开始了这种方式,在左侧后退按钮,没有取消右键:iOS:在导航栏中显示搜索栏时隐藏示波器栏
所以,给搜索栏当前的工作重点,而不攻,我试图在viewDidLoad中添加[_searchBar becomeFirstResponder];
,它不起作用。接下来我想:
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
搜索栏将在导航栏中显示的确但范围栏消失了,(为什么苹果WHY),有一个尴尬的差距。
我也试着子类UINavigationBar的,使之高。很容易改变它的大小,但内容对齐在栏的底部,并重叠任何你想添加的内容。
所以要重新迭代,当视图第一次出现时,我需要在导航栏中显示搜索栏,而不需要用户点击。我还应该指定这是在UITableViewController上(因为该页面有一个UIRefreshConrol),所以简单地将工具栏放在表视图上方不是一个选项。谢谢。
沮丧,我没有想'将'becomeFirstResponder'放在'viewDidAppear:'中。谢谢!回答你的问题:我希望它始终可见bc VC专门用于搜索。 (看看Instagram的搜索选项卡 - 这就是我所追求的)此外,有一个很好的理由使用“UISearchDisplayController” - 兼容iOS7。它可能会在iOS8中被弃用,但它仍然是完全有效的(并且仍然在IB中的对象库中)。问题仍然存在:如果您使用该选项在导航栏中显示搜索栏,为什么Apple会隐藏该范围,而不考虑设置'showsScope = YES'? – inorganik
它为什么隐藏范围栏?我不知道,但[它被记录](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchDisplayController_Class/index.html#//apple_ref/occ/instp/UISearchDisplayController/displaysSearchBarInNavigationBar )。 *“如果您在显示在导航栏中的搜索栏中将'showsScopeBar'属性设置为'YES',则系统会引发异常。”*可能因为导航栏高度不足以显示范围栏。 – greg