搜索
2016-01-24 本文已影响171人
天亮説晚安
//懒加载,创建搜索结果控制器。当在搜索框里里输入内容时,显示搜索结果控制器。结束在搜索结果控制器输入内容时,隐藏搜索控制器,为了避免多次创建搜索结果控制器,使用懒加载。
- (MTCitySearchResultViewController *)citySearchResult
{
if (!_citySearchResult) {
MTCitySearchResultViewController *citySearchResult = [[MTCitySearchResultViewController alloc] init];
[self addChildViewController:citySearchResult];
self.citySearchResult = citySearchResult;
[self.view addSubview:self.citySearchResult.view];
//用第三方框架设置创建搜索结果控制器的view和父view的位置关系。
[self.citySearchResult.view autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero excludingEdge:ALEdgeTop];
[self.citySearchResult.view autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.searchBar withOffset:15];
}
return _citySearchResult;
}
#pragma mark - 搜索框代理方法
/**
* 键盘弹出:搜索框开始编辑文字
*/
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
// 1.隐藏导航栏
[self.navigationController setNavigationBarHidden:YES animated:YES];
// 2.修改搜索框的背景图片
[searchBar setBackgroundImage:[UIImage imageNamed:@"bg_login_textfield_hl"]];
// 3.显示搜索框右边的取消按钮
[searchBar setShowsCancelButton:YES animated:YES];
// 4.显示遮盖
[UIView animateWithDuration:0.5 animations:^{
self.cover.alpha = 0.5;
}];
}
/**
* 键盘退下:搜索框结束编辑文字
*/
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
// 1.显示导航栏
[self.navigationController setNavigationBarHidden:NO animated:YES];
// 2.修改搜索框的背景图片
[searchBar setBackgroundImage:[UIImage imageNamed:@"bg_login_textfield"]];
// 3.隐藏搜索框右边的取消按钮
[searchBar setShowsCancelButton:NO animated:YES];
// 4.隐藏遮盖
[UIView animateWithDuration:0.5 animations:^{
self.cover.alpha = 0.0;
}];
// 5.移除搜索结果
self.citySearchResult.view.hidden = YES;
searchBar.text = nil;
}
/**
* 点击搜索框里的取消时调用
*/
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
[searchBar resignFirstResponder];
}
/**
* 搜索框里面的文字变化的时候调用
*/
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if (searchText.length) {
self.citySearchResult.view.hidden = NO;
self.citySearchResult.searchText = searchText;
} else {
self.citySearchResult.view.hidden = YES;
}
}