我最近正在更新我的应用程序并遇到了这个问题。当我开始在搜索栏中输入时,搜索栏消失了,我只能看到表格视图。我仍然可以继续输入,并且表格视图得到更新,但我看不到搜索栏。相同的设置适用于 iOS < 7
知道为什么会这样吗?
我最近正在更新我的应用程序并遇到了这个问题。当我开始在搜索栏中输入时,搜索栏消失了,我只能看到表格视图。我仍然可以继续输入,并且表格视图得到更新,但我看不到搜索栏。相同的设置适用于 iOS < 7
知道为什么会这样吗?
有点晚了,但我最近遇到了同样的问题。我希望搜索栏在所有搜索过程中都可见并处于活动状态,因此覆盖它的暗淡视图是一个大问题。对我来说,唯一有效的是更改暗视图的框架(显然它与更改 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];
}
尝试调整 searchResultsTableView 框架的大小
-(void)searchDisplayController:(UISearchDisplayController *)controller
didShowSearchResultsTableView:(UITableView *)tableView
我几乎精神崩溃,因为我无法在我的新应用项目中显示搜索栏。搜索栏没有显示在导航控制器中,尽管我做了以下操作:
1)将“搜索栏和搜索显示控制器”组件添加到我的故事板视图控制器(在视图下方的栏中,而不是视图中)
2)在viewDidLoad中,调用“self.searchDisplayController.displaysSearchBarInNavigationBar = YES;”
唯一发生的事情是我得到了一个标签(!),上面写着搜索。
经过长时间的挣扎后,我创建了一个新项目并开始逐步重建无法工作的项目。我从故事板开始……现在搜索栏 DID 显示。然后,我添加了诸如 Google Analytics 之类的库、外部组件等。直到该项目与那个不起作用的项目相同……现在问题又回来了!没有搜索栏!
当我开始删除东西时,我终于发现这是一个名为 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
一旦我删除或重命名了这个属性,一切都开始工作了。
这非常(!)特定于我的疯狂奇怪的问题,但也许它可以帮助某人。
-(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;
}
谢谢蒂希。如果我使用这段代码,搜索栏就会回来!
玩得开心,希望对你有帮助。