我在搜索栏下面有一个带有tableView的搜索栏。当用户点按搜索栏进行搜索时,我想全屏显示。但我无法将框架设置为UISearchBar的原点。 我是这样做的。
-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
[ [UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[self.topBarView setHidden:YES];
[UIView animateWithDuration:1.0
delay:0.0
options:0
animations:^{
[self.searchBar setFrame:CGRectMake(0.0,0.0, self.searchBar.frame.size.width,
self.searchBar.frame.size.height )];
}
completion:^(BOOL completion){
}];
[self.searchBar setNeedsDisplay];
}
}
我隐藏了搜索栏上方的所有视图,我将原点设置为0,0
在第二张图片中,顶部栏消失,但搜索栏停留在其位置。它应该在顶部。
如果有人能够发现问题就会很棒。
我也在使用自动布局这会导致任何问题吗?
答案 0 :(得分:0)
使用searchbar display controller.it将实现
答案 1 :(得分:0)
试试这个。 添加搜索栏& searchDisplay控制器到您的控制器。
UISearchBar * searchBar; UITableView * tableView; UISearchDisplayController * searchController;
// Create table view
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.backgroundColor = [UIColor whiteColor];
_tableView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
[self.view addSubview:_tableView];
// Create search bar
_searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.bounds.size.width, 44.0f)];
_searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
_searchBar.delegate = self;
[self.view addSubview:_searchBar];
[_searchBar sizeToFit];
// Create search controller
_searchController = [[UISearchDisplayController alloc] initWithSearchBar:_searchBar contentsController:self];
_searchController.searchResultsDataSource = self;
_searchController.searchResultsDelegate = self;
_searchController.delegate = self;
然后您可以执行此操作,以便searchBar成为响应者&显示键盘。
[_searchBar becomeFirstResponder];
希望有所帮助。