http://blog.sina.com.cn/s/blog_a7c44c880101ca1i.html
属性 | 作用 |
UIBarStyle barStyle | 控件的样式 |
id delegate | 设置控件的委托 |
NSString *text | 控件上面的显示的文字 |
NSString *prompt | 显示在顶部的单行文字,通常作为一个提示行 |
NSString *placeholder | 半透明的提示文字,输入搜索内容消失 |
BOOL showsBookmarkButton | 是否在控件的右端显示一个书的按钮(没有文字的时候) |
BOOL showsCancelButton | 是否显示cancel按钮 |
BOOL showsSearchResultsButton | 是否在控件的右端显示搜索结果按钮(没有文字的时候) |
BOOL searchResultsButtonSelected | 搜索结果按钮是否被选中 |
UIColor *tintColor | bar的颜色(具有渐变效果) |
BOOL translucent | 指定控件是否会有透视效果 |
UITextAutocapitalizationType autocapitalizationType | 设置在什么的情况下自动大写 |
UITextAutocorrectionType autocorrectionType | 对于文本对象自动校正风格 |
UIKeyboardType keyboardType | 键盘的样式 |
NSArray *scopeButtonTitles | 搜索栏下部的选择栏,数组里面的内容是按钮的标题 |
NSInteger selectedScopeButtonIndex | 搜索栏下部的选择栏按钮的个数 |
BOOL showsScopeBar | 控制搜索栏下部的选择栏是否显示出来 |
代理列表:
编辑代理
– searchBar:textDidChange:
– searchBar:shouldChangeTextInRange:replacementText:
– searchBarShouldBeginEditing:
– searchBarTextDidBeginEditing:
– searchBarShouldEndEditing:
– searchBarTextDidEndEditing:
点击按钮
– searchBarBookmarkButtonClicked:
– searchBarCancelButtonClicked:
– searchBarSearchButtonClicked:
– searchBarResultsListButtonClicked:
范围代理
– searchBar:selectedScopeButtonIndexDidChange:
UISearchBar
searchbar =[[UISearchBaralloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
searchbar.showsCancelButton=NO;
searchbar.barStyle=UIBarStyleDefault;
searchbar.placeholder=@"aaaaaa";
searchbar.keyboardType=UIKeyboardTypePhonePad;
[celladdSubview:searchbar];
[searchbarrelease];
添加搜索框事件:
-(void)searchBarTextDidBeginEdi
ting:(UISearchBar*)searchBar{
[searchBarsetShowsCancelButton:YES animated:YES];
self.tableView.allowsSelection=NO;
self.tableView.scrollEnabled=NO;
}
添加Cancel事件:
-(void)searchBarCancelButtonCli
cked:(UISearchBar*)searchBar{
searchBar.text=@"";
[searchBarsetShowsCancelButton:NO animated:YES];
[searchBarresignFirstResponder];
self.tableView.allowsSelection=YES;
self.tableView.scrollEnabled=YES;
}
添加搜索事件:
-(void)searchBarSearchButtonCli
cked:(UISearchBar*)searchBar{
NSArray*results;
[searchBarsetShowsCancelButton:NO animated:YES];
[searchBarresignFirstResponder];
self.tableView.allowsSelection=YES;
self.tableView.scrollEnabled=YES;
[self.tableDateremoveAllObjects];
[self.tableDateaddObjectsFromArray:results];
[self.tableViewreloadData];
}
最后绑定数据就是
复制数据的
-(void)resetSearch{
self.names=[self.allNamesmutabledeepCopy];
NSMutableArray*keyArray=[[NSMutableArray alloc]init];
keyArrayaddObjectsFromArray:[self.allNamesallkeys]sortedAaa>>>>>:[[@selector(compare;)]];
self.keys=keyArray;
[keyArrayrelease];
}
实现搜索的
-(void)handleSearchForTerm:(NSString *)searchterm{
NSMutableArray*s=[[NSMutableArray alloc]init];
[selfresetSearch];
for(NSString *key in self.keys){
NSMutableArray*array=[names valueForKey:key];
NSMutableArray*toRemove=[[NSMutableArray alloc]init];
for(NSString *name in array) {
if([namerangeOfString:searchtermoptions:NSCaseInsensitiveSearch].location==NSNotFound)
[toRemoveaddObject:name];
}
if([array count]==[toRemove count]) {
[saddObject:key];
[arrayremoveObjectsInArray:toRemove];
[toRemoverelease];
}
[self.keysremoveObjectsInArray:s];
[srelease];
}
}
seachBar=[[UISearchBar alloc] init];
//修改搜索框背景
seachBar.backgroundColor=[UIColor clearColor];
//去掉搜索框背景
//1.
[[searchbar.subviews objectAtIndex:0]removeFromSuperview];
//2.
for (UIView *subview in seachBar.subviews)
{
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])
{
[subview removeFromSuperview];
break;
}
}
//3自定义背景
UIImageView *imageView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"40-di.png"]];
[mySearchBar insertSubview:imageView atIndex:1];
[imageView release];
//4输入搜索文字时隐藏搜索按钮,清空时显示
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{
searchBar.showsScopeBar = YES;
[searchBar sizeToFit];
[searchBar setShowsCancelButton:YES animated:YES];
return YES;
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar{
searchBar.showsScopeBar = NO;
[searchBar sizeToFit];
[searchBar setShowsCancelButton:NO animated:YES];
return YES;
}
//改变搜索按钮文字
//改变UISearchBar取消按钮字体
for(id cc in [searchBar subviews])
{
if([cc isKindOfClass:[UIButton class]])
{
UIButton *btn= (UIButton *)cc;
[btn setTitle:@"搜索" forState:UIControlStateNormal];
}
}