// // EMSearchViewController.m // ChatDemo-UI3.0 // // Created by XieYajie on 2019/1/16. // Copyright © 2019 XieYajie. All rights reserved. // #import "EMSearchViewController.h" @interface EMSearchViewController () @end @implementation EMSearchViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.searchBar = [[EMSearchBar alloc] init]; self.searchBar.delegate = self; [self.view addSubview:self.searchBar]; [self.searchBar mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view); make.left.equalTo(self.view); make.right.equalTo(self.view); make.height.equalTo(@50); }]; self.tableView.rowHeight = 60; [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.searchBar.mas_bottom); make.left.equalTo(self.view); make.right.equalTo(self.view); make.bottom.equalTo(self.view); }]; self.searchResults = [[NSMutableArray alloc] init]; self.searchResultTableView = [[UITableView alloc] init]; self.searchResultTableView.tableFooterView = [[UIView alloc] init]; self.searchResultTableView.rowHeight = self.tableView.rowHeight; self.searchResultTableView.delegate = self; self.searchResultTableView.dataSource = self; } - (void)dealloc { [[EMRealtimeSearch shared] realtimeSearchStop]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } #pragma mark - EMSearchBarDelegate - (void)searchBarShouldBeginEditing:(EMSearchBar *)searchBar { if (!self.isSearching) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillHide:) name:UIKeyboardWillHideNotification object:nil]; self.isSearching = YES; [self.view addSubview:self.searchResultTableView]; [self.searchResultTableView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.searchBar.mas_bottom); make.left.equalTo(self.view); make.right.equalTo(self.view); make.bottom.equalTo(self.view); }]; } } - (void)searchBarCancelButtonAction:(EMSearchBar *)searchBar { [[EMRealtimeSearch shared] realtimeSearchStop]; [[NSNotificationCenter defaultCenter] removeObserver:self]; self.isSearching = NO; [self.searchResults removeAllObjects]; [self.searchResultTableView reloadData]; [self.searchResultTableView removeFromSuperview]; } - (void)searchBarSearchButtonClicked:(EMSearchBar *)searchBar { } - (void)searchTextDidChangeWithString:(NSString *)aString { } #pragma mark - KeyBoard - (void)keyBoardWillShow:(NSNotification *)note { if (!self.isSearching) { return; } // 获取用户信息 NSDictionary *userInfo = [NSDictionary dictionaryWithDictionary:note.userInfo]; // 获取键盘高度 CGRect keyBoardBounds = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGFloat keyBoardHeight = keyBoardBounds.size.height; // 获取键盘动画时间 CGFloat animationTime = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]; // 定义好动作 void (^animation)(void) = ^void(void) { [self.searchResultTableView mas_updateConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self.view.mas_bottom).offset(-keyBoardHeight); }]; }; if (animationTime > 0) { [UIView animateWithDuration:animationTime animations:animation]; } else { animation(); } } - (void)keyBoardWillHide:(NSNotification *)note { if (!self.isSearching) { return; } // 获取用户信息 NSDictionary *userInfo = [NSDictionary dictionaryWithDictionary:note.userInfo]; // 获取键盘动画时间 CGFloat animationTime = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]; // 定义好动作 void (^animation)(void) = ^void(void) { [self.searchResultTableView mas_updateConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self.view.mas_bottom); }]; }; if (animationTime > 0) { [UIView animateWithDuration:animationTime animations:animation]; } else { animation(); } } @end