UITextField 自定义搜索栏

1,创建UITextField,并且设置代理

searchField = [[UITextField alloc]initWithFrame:CGRectMake(0,5,320,36)] ;
    searchField.textColor= [UIColor colorWithRed:0.0/255.0 green:103.0/255.0 blue:155.0/255.0 alpha:1.0];
    searchField.font= [UIFont systemFontOfSize:16] ;
    searchField.backgroundColor= [UIColor blueColor];
    //搜索栏内容的位置
    searchField.contentVerticalAlignment=UIControlContentVerticalAlignmentBottom;
    [searchField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; // textField的文本发生变化时相应事件
//    设置ReturnKeyType为UIRetuirKeySearch;
    [searchField setReturnKeyType:UIReturnKeySearch];
//    设置UITextField的delegate为self
    searchField.delegate=self;
    mytableView.tableHeaderView = searchField;

2,搜索就是要做到实时监控输入内容的变化

- (void) textFieldDidChange:(UITextField*) TextField{
    NSLog(@"textFieldDidChange textFieldDidChange %@", TextField.text);

    NSString *conditionStr = TextField.text;
    NSLog(@"+++++%@", conditionStr);
    // 2. 创建谓词,准备进行判断的工具
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.nameString CONTAINS [CD] %@ ", conditionStr];
    seachArray = [NSMutableArray arrayWithArray:[allNameArray filteredArrayUsingPredicate:predicate]];
    NSLog(@" searchMuArray  = %@", seachArray);

    [mytableView reloadData];

    if(![TextField.text isEqualToString:@""]) {
//        delButton.hidden=NO;  // 仿制searchbar后面的小叉叉
    } else{
//        delButton.hidden=YES;
    }
}

上面的代码只是一个参考 具体实现就是这么做的.

3,添加取消按钮

取消不仅仅只是删除UITextField的值,这样,我们还是起不到取消搜索的功能.那么我们应该怎么做呢

添加一个用于删除的button 具体创建就不写了

- (void)fieldCancleButton {
     searchField.text = @"";
    [self textFieldDidChange:searchField];
}

这是button的点击方法

同时,我们也要在viewWillAppear:里面调用button的点击方法,这样我们就能做到我们对搜索到的元素操作后,再次进入该页面的时候.保证显示的内容是全部的内容

时间: 2024-08-10 21:17:02

UITextField 自定义搜索栏的相关文章

UITextField自定义placeHolder颜色并保持placeHolder居中

思路: 1.自定义UITextField的子类 2.重写drawPlaceholderInRect方法改变placeHolder颜色 3.重写placeholderRectForBounds方法保持placeHolder文字居中 代码如下: @interface CustomPlaceHolderTextField : UITextField @end @implementation CustomPlaceHolderTextField - (void)drawPlaceholderInRect

UITextField自定义[转载]

Swipe Shift Caret介绍: 在UITextView或者UITextField中插入文字的时候,用手指滑动屏幕左右两边任意位置,都可以左右调整文字输入光标(caret).在选择文字范围时,用手指左右滑动屏幕,都可以调整选择的左右范围,而不需要用手指拖动范围选择的两根竖线(caret).http://ios.itmdc.com/thread-3647-1-1.html ZenKeyboard 介绍: 自定义数字输入键盘的外观.实现类似Square App的数字输入键盘样式.http:/

iOS用UITextField自定义UISearchBar遇到的布局问题

以下问题都是在设定了leftView的情况下发生 2.设置按钮为leftView并通过contentinset限制了图片显示高度达到图片显示的居中效果,结果按钮大小被调整,左右间隔被取消 修改方案:contentinset设置时,按照需求top.left.right.bottom一起设置,否者只设置上下间距,左右间距会根据实际所需取消掉多余空白 1. leftView上面加了个imageView,imageView使用了自动布局,导致可输入字符范围大幅缩小不可见 修改方案:leftView和它的

Android自定义View的三种实现方式

在毕设项目中多处用到自定义控件,一直打算总结一下自定义控件的实现方式,今天就来总结一下吧.在此之前学习了郭霖大神博客上面关于自定义View的几篇博文,感觉受益良多,本文中就参考了其中的一些内容. 总结来说,自定义控件的实现有三种方式,分别是:组合控件.自绘控件和继承控件.下面将分别对这三种方式进行介绍. (一)组合控件 组合控件,顾名思义就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件.比如很多应用中普遍使用的标题栏控件,其实用的就是组合控件,那么下面将通过实现一个简单

UITextField placeholder text color

iOS6 and Later 改变UITextField 中占位符 提示文本的文字颜色 在新版本中(iOS6以后)iOS提供一种 Key = value 属性的方式,来改变UI的属性内容.以UITextField为例 ? 1 @property(nonatomic,copy) NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0); // default is nil attributedText 为UITextField 的 publi

Android自定义布局的三种实现方式

在毕设项目中多处用到自定义布局,一直打算总结一下自定义布局的实现方式,今天就来总结一下吧.在此之前学习了郭霖大神博客上面关于自定义View的几篇博文,感觉受益良多,本文中就参考了其中的一些内容. 总结来说,自定义布局的实现有三种方式,分别是:组合控件.自绘控件和继承控件.下面将分别对这三种方式进行介绍. (一)组合控件 组合控件,顾名思义就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件.比如很多应用中普遍使用的标题栏控件,其实用的就是组合控件,那么下面将通过实现一个简单

iOS控件头文件解读

拿UITextField举例说明: 1. NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextInput, NSCoding> @end 这两行内容中间的内容, 比如@property(nonatomic,copy)   NSString *text;  是UITextField的属性,用于设置UITextField的文字信息.其他属性可以参照官方文档查阅. 比如- (CGRect)placeholderR

自定义UITextField

目的是实现如下的效果: UITextField的leftView是自定义的UIView,其中: 1.包含一个居中显示的icon,并且上,左,下各有1px的间隙 2.左上和左下是圆角,右边没有圆角 居中展示icon 关键是leftView不是UIImageView,而是把UIImageView设置为subview CGFloat height = frame.size.height; UIView *leftView = [[UIView alloc] initWithFrame:CGRectMa

浅谈自定义UITextField的方法

观察效果图 UITextField有以下几种特点: 1.默认占位文字是灰色的 2.当光标点上去时,占位文字变为白色 3.光标是白色的 接下来我们通过不同的方法来解决问题 一.将xib中的UITextField与代码关联 通过NSAttributeString方法来更改占位文字的属性 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. /