iOS之單獨(dú)使用UISearchBar創(chuàng)建搜索框的示例
這里實(shí)現(xiàn)的是進(jìn)入頁(yè)面后直接在導(dǎo)航欄上顯示搜索框(包含右側(cè)取消按鈕),并彈出鍵盤(pán)且搜索框?yàn)橹苯涌奢斎霠顟B(tài)(第一響應(yīng)者),點(diǎn)擊右側(cè)取消按鈕后收起鍵盤(pán)并返回上一頁(yè)。

搜索頁(yè)面
1.實(shí)現(xiàn)代理UISearchBarDelegate
@interface SearchViewController ()<UISearchBarDelegate>
2.創(chuàng)建一個(gè)UISearchBar為屬性
@property (nonatomic, strong) UISearchBar *searchBar;
3.進(jìn)入頁(yè)面后彈起鍵盤(pán)和離開(kāi)頁(yè)面前收起鍵盤(pán)
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (!_searchBar.isFirstResponder) {
[self.searchBar becomeFirstResponder];
}
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.searchBar resignFirstResponder];
}
4.具體實(shí)現(xiàn)
- (void)setBarButtonItem
{
//隱藏導(dǎo)航欄上的返回按鈕
[self.navigationItem setHidesBackButton:YES];
//用來(lái)放searchBar的View
UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(5, 7, self.view.frame.size.width, 30)];
//創(chuàng)建searchBar
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(titleView.frame) - 15, 30)];
//默認(rèn)提示文字
searchBar.placeholder = @"搜索內(nèi)容";
//背景圖片
searchBar.backgroundImage = [UIImage imageNamed:@"clearImage"];
//代理
searchBar.delegate = self;
//顯示右側(cè)取消按鈕
searchBar.showsCancelButton = YES;
//光標(biāo)顏色
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"];
//設(shè)置按鈕上的文字
[cancleBtn setTitle:@"取消" forState:UIControlStateNormal];
//設(shè)置按鈕上文字的顏色
[cancleBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[titleView addSubview:searchBar];
self.searchBar = searchBar;
self.navigationItem.titleView = titleView;
}
5.實(shí)現(xiàn)代理方法
#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];
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS開(kāi)發(fā)中Quartz2D繪圖路徑的使用以及條紋效果的實(shí)現(xiàn)
這篇文章主要介紹了iOS開(kāi)發(fā)中Quartz2D繪圖路徑的使用以及條紋效果的實(shí)現(xiàn),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-11-11
iOS程序開(kāi)發(fā)中設(shè)置UITableView的全屏分隔線的方法(不畫(huà)線)
ableView是app開(kāi)發(fā)中常用到的控件,功能很強(qiáng)大,多用于數(shù)據(jù)的顯示。下面給大家介紹設(shè)置UITableView的全屏分隔線的兩種方法2016-04-04
iOS開(kāi)發(fā)CGContextRef畫(huà)圖使用總結(jié)
這篇文章主要為大家詳細(xì)介紹了iOS開(kāi)發(fā)CGContextRef畫(huà)圖使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
解析iOS開(kāi)發(fā)中的FirstResponder第一響應(yīng)對(duì)象
這篇文章主要介紹了解析iOS開(kāi)發(fā)中的FirstResponder第一響應(yīng)對(duì)象,包括View的FirstResponder的釋放問(wèn)題,需要的朋友可以參考下2015-10-10
iOS App設(shè)計(jì)模式開(kāi)發(fā)中對(duì)interpreter解釋器模式的運(yùn)用
這篇文章主要介紹了iOS App設(shè)計(jì)模式開(kāi)發(fā)中對(duì)interpreter解釋器模式的運(yùn)用,示例為傳統(tǒng)的Objective-C寫(xiě)成,需要的朋友可以參考下2016-04-04
IOS self和super詳解實(shí)現(xiàn)原理及區(qū)別
這篇文章主要介紹了iOS self和super詳解實(shí)現(xiàn)原理及區(qū)別的相關(guān)資料,這里不僅說(shuō)明區(qū)別并介紹實(shí)現(xiàn)原理,具有參考價(jià)值,需要的朋友可以參考下2016-12-12

