隐藏UISearchBar直到用户滚动?

kai*_*ain 12 uisearchbar ios ios6

我在表格视图的顶部实现了搜索栏和搜索显示控制器.

当视图加载搜索栏时,相对范围始终可见.

有没有一种简单的方法可以隐藏它,直到用户向下滚动,就像它在音乐应用程序中发生的那样?

iDe*_*Dev 18

您需要添加搜索栏作为表视图的标题,然后将contentoffset表视图的属性设置viewDidLoad为as,

[self.tableView setContentOffset:CGPointMake(0,44) animated:YES];//or (0, 88) depends on the height of it
Run Code Online (Sandbox Code Playgroud)

对于搜索显示控制器,您也可以尝试这样做,

[self.searchDisplayController setActive:NO animated:YES];
Run Code Online (Sandbox Code Playgroud)

  • 当表中的所有行都适合屏幕时,解决方案不会隐藏搜索栏.这种情况的任何已知解决方法? (3认同)

cod*_*cat 12

没有硬编码的另一种方法

[self.tableView setContentOffset:CGPointMake(0.0, self.tableView.tableHeaderView.frame.size.height) animated:YES];
Run Code Online (Sandbox Code Playgroud)


mgh*_*hez 7

经过几个小时的拔毛,一些有效的东西

  • 在iOS 9上
  • 不依赖于表中的行数
  • 具有可变高度行

    考虑到searchbar是tableView.tableHeaderView

    @interface MyTableViewController ()
    
    @property (nonatomic, assign) BOOL firstLayout;
    
    @end
    
    - (void) viewDidLoad {
    [super viewDidLoad];
    
    
    self.firstLayout = YES;
    //your code
    
    }
    
    -(void)viewDidLayoutSubviews{
    
    [super viewDidLayoutSubviews];
    
    if(self.firstLayout){
    CGPoint offset = CGPointMake(0, self.tableView.tableHeaderView.frame.size.height - self.tableView.contentInset.top);
    [self.tableView setContentOffset:offset];
    
        self.firstLayout = NO;
    
    }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)