UISearchBar 和 UISearchDisplayController 没有在UITableView 的headerView 导致searchResultsTableView的frame出问题

来源:互联网 发布:nec投影机网络投影 编辑:程序博客网 时间:2024/06/06 01:19

由于设计需求 UISearchBar 和 UISearchDisplayController 没有在UITableView 的headerView 导致searchResultsTableView的frame 出问题。

-(void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView{    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];}-(void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView{    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resSetFrame:) name:UIKeyboardWillHideNotification object:nil];}- (void)resSetFrame:(NSNotification*)notification{    CGFloat height = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;    UITableView *tableView = [[self searchDisplayController] searchResultsTableView];    UIEdgeInsets inset;    //49 我加上 49 是因为 还有tabbar 在显示 没有隐藏    [[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 ? (inset = UIEdgeInsetsMake(0, 0, height + 49, 0)) : (inset = UIEdgeInsetsZero);    [tableView setContentInset:inset];    [tableView setScrollIndicatorInsets:inset];}




------------分割线-----------------


附带 更改 cancel 变更为 “取消”


-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{    your_searchBar.showsCancelButton = YES;    self.navigationController.navigationBar.hidden = YES;    //将 cancel 改成 取消 并且显示白色    for(id item in [searchBar.subviews[0] subviews])    {        NSLog(@"%@",item);        if([item isKindOfClass:[UIButton class]])        {            UIButton *btn = (UIButton *)item;            [btn setTitle:@"取消" forState:UIControlStateNormal];            btn.tintColor = [UIColor whiteColor];            [btn setNeedsDisplay];        }    }}



0 0
原创粉丝点击