iOS之單獨(dú)使用UISearchBar創(chuàng)建搜索框

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

搜索頁(yè)面

1.實(shí)現(xiàn)代理UISearchBarDelegate

@interface SearchViewController ()<UISearchBarDelegate>

2.創(chuàng)建一個(gè)UISearchBar為屬性

@property (nonatomic, strong) UISearchBar *searchBar;

3.進(jìn)入頁(yè)面后彈起鍵盤和離開(kāi)頁(yè)面前收起鍵盤

- (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];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容