首页 > 系统 > iOS > 正文

iOS之单独使用UISearchBar创建搜索框的示例

2020-07-26 02:38:27
字体:
来源:转载
供稿:网友

这里实现的是进入页面后直接在导航栏上显示搜索框(包含右侧取消按钮),并弹出键盘且搜索框为直接可输入状态(第一响应者),点击右侧取消按钮后收起键盘并返回上一页。

搜索页面

1.实现代理UISearchBarDelegate

@interface SearchViewController ()<UISearchBarDelegate>

2.创建一个UISearchBar为属性

@property (nonatomic, strong) UISearchBar *searchBar;

3.进入页面后弹起键盘和离开页面前收起键盘

- (void)viewDidAppear:(BOOL)animated{  [super viewDidAppear:animated];  if (!_searchBar.isFirstResponder) {    [self.searchBar becomeFirstResponder];  }}- (void)viewWillDisappear:(BOOL)animated{  [super viewWillDisappear:animated];  [self.searchBar resignFirstResponder];}

4.具体实现

- (void)setBarButtonItem{  //隐藏导航栏上的返回按钮  [self.navigationItem setHidesBackButton:YES];  //用来放searchBar的View  UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(5, 7, self.view.frame.size.width, 30)];  //创建searchBar  UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(titleView.frame) - 15, 30)];  //默认提示文字  searchBar.placeholder = @"搜索内容";  //背景图片  searchBar.backgroundImage = [UIImage imageNamed:@"clearImage"];  //代理  searchBar.delegate = self;  //显示右侧取消按钮  searchBar.showsCancelButton = YES;  //光标颜色  searchBar.tintColor = UIColorFromRGB(0x595959);  //拿到searchBar的输入框  UITextField *searchTextField = [searchBar valueForKey:@"_searchField"];  //字体大小  searchTextField.font = [UIFont systemFontOfSize:15];  //输入框背景颜色  searchTextField.backgroundColor = [UIColor colorWithRed:234/255.0 green:235/255.0 blue:237/255.0 alpha:1];  //拿到取消按钮  UIButton *cancleBtn = [searchBar valueForKey:@"cancelButton"];  //设置按钮上的文字  [cancleBtn setTitle:@"取消" forState:UIControlStateNormal];  //设置按钮上文字的颜色  [cancleBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];  [titleView addSubview:searchBar];  self.searchBar = searchBar;  self.navigationItem.titleView = titleView;}

5.实现代理方法

#pragma mark - UISearchBarDelegate- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{  return YES;}- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {  searchBar.showsCancelButton = YES;}- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{  NSLog(@"SearchButton");}- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{  [self.searchBar resignFirstResponder];  [self.navigationController popViewControllerAnimated:YES];}- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{  searchBar.showsCancelButton = YES;}- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{  NSString *inputStr = searchText;  [self.results removeAllObjects];  for (ElderModel *model in self.dataArray) {    if ([model.name.lowercaseString rangeOfString:inputStr.lowercaseString].location != NSNotFound) {      [self.results addObject:model];    }  }  [self.tableView reloadData];}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表