当前位置 博文首页 > xixi:UISearchBar 和 UISearchDisplayController 没有在UITable
由于设计需求 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];
}
}
}