Ios7 iOS 7 UISearchDisplayController搜索栏消失

Ios7 iOS 7 UISearchDisplayController搜索栏消失,ios7,uisearchdisplaycontroller,iso,Ios7,Uisearchdisplaycontroller,Iso,我最近在更新我的应用程序时遇到了这个问题。当我开始在搜索栏中键入时,搜索栏消失,我只能看到表视图。我仍然可以继续键入,并且表视图得到更新,但我看不到搜索栏。 同样的设置在iOS

我最近在更新我的应用程序时遇到了这个问题。当我开始在搜索栏中键入时,搜索栏消失,我只能看到表视图。我仍然可以继续键入,并且表视图得到更新,但我看不到搜索栏。 同样的设置在iOS<7上也可以正常工作

知道为什么会这样吗


尝试在上调整searchResultsTableView框架的大小

-(void)searchDisplayController:(UISearchDisplayController *)controller 
 didShowSearchResultsTableView:(UITableView *)tableView

有点晚了,但我最近遇到了同样的问题。我希望搜索栏在整个搜索过程中都可见并处于活动状态,因此覆盖它的暗淡视图是一个大问题。对我来说,唯一有效的方法就是更改暗显视图的框架(显然这与更改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) 将“搜索栏和搜索显示控制器”组件添加到我的故事板视图控制器(在视图下方的栏中,而不是视图中)

2) 在viewDidLoad中,调用“self.searchDisplayController.displaysSearchBarInNavigationBar=YES

唯一发生的事情是我得到了一个标签(!),上面写着搜索

经过长时间的努力,我创建了一个新项目,并开始一件一件地重新创建不工作的项目。我从故事板开始…现在搜索栏显示了。然后我添加了一些库,比如谷歌分析、外部组件等,直到这个项目与不起作用的项目完全相同……现在问题又出现了!没有搜索栏

当我开始删除东西时,我最终发现它是一个类别代码文件(我没有提到,但在项目中),名为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
#导入“UISearchBar+SearchField.h”
@实现UISearchBar(搜索字段)
-(UITextField*)搜索字段{
NSU整数子视图计数=[self.subviews计数];
对于(int i=0;i
当我删除或重命名此属性时,一切都开始工作


这是非常(!)特定于我异常奇怪的问题,但可能对某人有所帮助。

实际上,我将搜索栏放在表视图中,然后隐藏导航控制器。self.searchDisplayController.searchResultsTableView.backgroundColor=[UIColor clearColor];可以帮助您查看搜索栏是否隐藏在后面searchDisplayController@Tihi它工作得很好,但当我点击搜索栏时,tableview的第一行隐藏在搜索栏后面。。
#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