我最近更新了我的应用并遇到了这个问题。当我开始在搜索栏中输入时,搜索栏消失,我只能看到表格视图。我仍然可以继续打字,表格视图会更新但我看不到搜索栏。 相同的设置适用于iOS< 7
知道为什么会这样吗?
答案 0 :(得分:8)
有点晚了,但最近我遇到了同样的问题。我希望搜索栏在所有搜索中都可见并且处于活动状态,因此覆盖它的灰色视图是一个很大的问题。对我来说,唯一有用的是改变暗视图的框架(显然它与更改searchResultsTableView的框架不同)。 我已设法使用以下代码执行此操作:
-(void)setCorrectFrames
{
// Here we set the frame to avoid overlay
CGRect searchDisplayerFrame = self.searchDisplayController.searchResultsTableView.superview.frame;
searchDisplayerFrame.origin.y = CGRectGetMaxY(self.searchDisplayController.searchBar.frame);
searchDisplayerFrame.size.height -= searchDisplayerFrame.origin.y;
self.searchDisplayController.searchResultsTableView.superview.frame = searchDisplayerFrame;
}
-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
[self setCorrectFrames];
}
-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
{
[self setCorrectFrames];
}
答案 1 :(得分:3)
尝试在
上调整searchResultsTableView框架的大小-(void)searchDisplayController:(UISearchDisplayController *)controller
didShowSearchResultsTableView:(UITableView *)tableView
答案 2 :(得分:1)
-(void)setCorrectSearchBarFrames
{
//INFO: Here we set the frame to avoid overlay
CGRect searchDisplayerFrame = self.searchDisplayController.searchResultsTableView.frame;
searchDisplayerFrame.origin.y = 40.0;
searchDisplayerFrame.size.height -= 40.0;
self.searchDisplayController.searchResultsTableView.frame = searchDisplayerFrame;
}
谢谢蒂希。 如果我使用这段代码,搜索栏就会回来!!
玩得开心,我希望它可以帮到你。
答案 3 :(得分:1)
我几乎有精神崩溃,因为我无法让搜索栏显示在我的新应用项目中。搜索栏没有显示在导航控制器中,尽管我已完成以下操作:
1)添加一个"搜索栏和搜索显示控制器"组件到我的故事板视图控制器(在视图下方的栏中,而不是视图中)
2)在viewDidLoad中,调用" self.searchDisplayController.displaysSearchBarInNavigationBar = YES;"
唯一发生的事情是我有一个标签(!),上面写着搜索。
经过一段时间的挣扎之后,我创建了一个新项目并开始逐件重建非工作时间。我从故事板开始......现在搜索栏显示DID。然后我添加了像谷歌分析,外部组件等库。直到项目与那个不起作用的项目相同...现在问题又回来了!没有搜索栏!
当我开始删除内容时,我终于发现它是一个类别代码文件(我没有引用,但是在项目中),它被称为UISearchBar + SearchField,它定义了一个只读属性。
.h文件如下所示:
@interface UISearchBar (SearchField2)
@property (nonatomic, readonly) UITextField *searchField;
@end
.m文件看起来像这样
#import "UISearchBar+SearchField.h"
@implementation UISearchBar (SearchField)
- (UITextField *)searchField {
NSUInteger subViewCount = [self.subviews count];
for (int i = 0; i < subViewCount; i++) {
if ([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) {
return [self.subviews objectAtIndex:i];
}
}
return nil;
}
@end
我删除或重命名此属性后,一切都开始有效。
这非常(!)特定于我疯狂的奇怪问题,但也许它可以帮助某人。