【发布时间】:2013-11-21 00:30:38
【问题描述】:
当我将 IB(Xcode 5)中的 UISearchDisplayController 添加到 UINavigationController 中显示的 UIViewController 并按下搜索栏时,搜索栏会被黑色半透明视图覆盖。
我还没有接触任何代码,所以我不确定那里发生了什么。
【问题讨论】:
标签: ios iphone objective-c interface-builder xcode5
当我将 IB(Xcode 5)中的 UISearchDisplayController 添加到 UINavigationController 中显示的 UIViewController 并按下搜索栏时,搜索栏会被黑色半透明视图覆盖。
我还没有接触任何代码,所以我不确定那里发生了什么。
【问题讨论】:
标签: ios iphone objective-c interface-builder xcode5
这实际上是 iOS UISearchBarDisplayController 中的一个错误(在 UINavigationController 中使用时)。默认行为是突出显示文本框,其余视图变暗,但此暗视图框架不考虑导航栏高度。
解决这个问题的最简单方法是实现搜索栏委托
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { self.navigationController.navigationBarHidden = YES; } - (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller{ self.navigationController.navigationBarHidden = 否; }其他选择包括修改搜索栏的框架
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { // 将搜索栏动画到顶部 ie. y=0 [UIView animateWithDuration:0.25f 动画:^{ CGRect 框架 = 控制器.searchBar.frame; frame.origin.y = 0; 控制器.searchBar.frame = 框架; }]; }【讨论】: