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

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

搜索页面

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];
}

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

时间: 2017-10-30

IOS 开发之UISearchBar 详解及实例

IOS UISearchBar 详解 iPhone开发之UISearchBar学习是本文要学习的内容,主要介绍了UISearchBar的使用,不多说,我们先来看详细内容.关于UISearchBar的一些问题. 1.修改UISearchBar的背景颜色 UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField. 要IB中没有直接操作背景的属性.方法是直接将 UISearchBarBackGround移去 seachBar=

iOS App开发中UISearchBar搜索栏组件的基本用法整理

基本属性 复制代码 代码如下: @UISearchBar search = [[UISearchBar alloc]initWithFrame:CGRectMake(0,44,320,120)]; pragma mark -基本设置 复制代码 代码如下: //控件的样式 默认--0白色,1是黑色风格 /* UIBarStyleDefault          = 0, UIBarStyleBlack            = 1, search.barStyle =UIBarStyleDefau

IOS改变UISearchBar中搜索框的高度

一.系统的searchBar 1.UISearchBar的中子控件及其布局 UIView(直接子控件) frame 等于 searchBar的bounds,view的子控件及其布局 UISearchBarBackground(间接子控件) frame 等于searchBar的bounds UISearchBarTextField(间接子控件) frame.origin等于(8.0, 6.0),即不等于searchBar的bounds 2.改变searchBar的frame只会影响其中搜索框的宽度

iOS中修改UISearchBar圆角的小技巧分享

前言 在我们日常开发中,经常会遇到一些需求非要把 UISearchBar 默认的圆角矩形的圆角改大,顶端改成圆形的.虽然系统没有提供这个 API,不过还是有一个简单方法可以解决. 解决方法: 首先在 UIView 的 category 里加一个方法: UIView+Utils.m - (UIView*)subViewOfClassName:(NSString*)className { for (UIView* subView in self.subviews) { if ([NSStringFr

iOS中的UISearchBar搜索框组件基础使用指南

UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开发需求.比如:修改placeholder的颜色.修改UISearchBar上面的UITextfield的背景颜色.修改UITextfield上面的照片等等. 为了实现上述的需求,最好写一个UISearchBar的子类就叫LSSearchBar吧 LSSearchBar.h如下: 复制代码 代码如下: #import <UIKit/UIKi

iOS中使用UISearchBar控件限制输入字数的实现方法

废话不多说了,直接给大家上关键代码了,具体代码如下所述: - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText // called when text changes (including clear) { if (searchBar.text.length > IMPUT_MAX){ searchBar.text = [searchBar.text substringToIndex:15]

IOS开发代码分享之设置UISearchBar的背景颜色

今天用到UISearchBar,之前网上提供的方法已经不能有效的去除掉它的背景色了,修改背景色方法如下: mySearchBar.backgroundColor = RGBACOLOR(249,249,249,1);     mySearchBar.backgroundImage = [self imageWithColor:[UIColor clearColor] size:mySearchBar.bounds.size];   //取消searchbar背景色 - (UIImage *)im

IOS开发代码分享之获取启动画面图片的string

本代码支持 iPhone 6 以下. 支持 iPhone 及 iPad +(NSString*)getLaunchImageName {           NSArray* images= @[@"LaunchImage.png", @"LaunchImage@2x.png",@"LaunchImage-700@2x.png",@"LaunchImage-568h@2x.png",@"LaunchImage-700

IOS开发代码分享之用nstimer实现倒计时功能

用nstimer实现倒计时功能,废话不多说,直接上代码,详细解释请参照注释 // [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];   // - (void)timerFireMethod:(NSTimer *)theTimer {     BOOL timeStart = YES;     NSCalend

BootStrap轻松实现微信页面开发代码分享

1.  行长度: <div class="col-md-12"> </div> 2.modal <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <

iOS开发之详谈属性设置readwrite、readonly、retain、copy、assign、nonatomic

具体详细介绍请看下文文字说明吧,本文介绍的非常详细. 1 . 可读性: readonly.readwrite @property(readwrite,....) valueType value; 这个属性是变量的默认属性,就是如果你 (readwrite and readonly 都没有使用,那么你的变量就是 readwrite属性 ) ,通过加入 readwrite 属性你的变量就会有 get 和 set 方法. property(readonly,...) valueType value;

iOS 设置状态栏的背景颜色方法

设置状态栏的背景颜色 - (void)setStatusBarBackgroundColor:(UIColor *)color { UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; if ([statusBar respondsToSelector:@selector(setBackgro

linux BASH shell下设置字体及背景颜色

BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字符的显示颜色改为黑色 \e[31m 将字符的显示颜色改为红色 \e[32m 将字符的显示颜色改为绿色 \e[33m 将字符的显示颜色改为淡红色 \e[34m 将字符的显示颜色改为蓝色 \e[35m 将字符的显示颜色改为紫色 \e[36m 将字符的显示颜色改为淡蓝色 \e[37m 将字符的显示颜色改为灰色 \e[40m -- \e[47m 设置背景色 \e[40m 将背景色设

iOS开发中使用UILabel设置字体的相关技巧小结

一.初始化 复制代码 代码如下: UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];      [self.view addSubview:myLabel]; 二.设置文字 1.设置默认文本 复制代码 代码如下: NSString *text = @"标签文本"; myLabel.text = text; 效果: 2.设置标签文本(此属性是iOS6.0之后才出现,如若不是必要,不

extjs grid设置某列背景颜色和字体颜色的方法

css代码: 复制代码 代码如下: .x-grid-back-red { background: #FF0000; } js代码: 复制代码 代码如下: { header : '分成类型', dataIndex : 'divideType', renderer : function(v,m){ m.css='x-grid-back-red'; return v; }, width : 60 } 或者直接这样写也可以 复制代码 代码如下: { header : '编号', dataIndex :

extjs grid设置某列背景颜色和字体颜色的实现方法

css代码: 复制代码 代码如下: .x-grid-back-red { background: #FF0000; } js代码: 复制代码 代码如下: { header : '分成类型', dataIndex : 'divideType', renderer : function(v,m){ m.css='x-grid-back-red'; return v; }, width : 60 } 或者直接这样写也可以 复制代码 代码如下: { header : '编号', dataIndex :