溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在iOS中使用UISearchBar創(chuàng)建一個(gè)搜索框

發(fā)布時(shí)間:2021-03-30 16:02:05 來(lái)源:億速云 閱讀:317 作者:Leah 欄目:移動(dòng)開發(fā)

怎么在iOS中使用UISearchBar創(chuàng)建一個(gè)搜索框?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

搜索頁(yè)面

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

@interface SearchViewController ()<UISearchBarDelegate>

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

@property (nonatomic, strong) UISearchBar *searchBar;

3.進(jìn)入頁(yè)面后彈起鍵盤和離開頁(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];
}

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI