UISearchBar

1、UISearchBar的基本屬性

```

// 初始化

_searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];

[self.searchBar setPlaceholder:@"Search"];// 搜索框的占位符

[self.searchBar setPrompt:@"Prompt"];// 頂部提示文本,相當于控件的Title

[self.searchBar setBarStyle:UIBarMetricsDefault];// 搜索框樣式

[self.searchBar setTintColor:[UIColor blackColor]];// 搜索框的顏色,當設置此屬性時,barStyle將失效

[self.searchBar setTranslucent:YES];// 設置是否透明

[self.searchBar setBackgroundImage:[UIImage imageNamed:@"image0"]];// 設置背景圖片

[self.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"image3"] forState:UIControlStateNormal];// 設置搜索框中文本框的背景

[self.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"image0"] forState:UIControlStateHighlighted];

[self.searchBar setSearchFieldBackgroundPositionAdjustment:UIOffsetMake(30, 30)];// 設置搜索框中文本框的背景的偏移量

[self.searchBar setSearchResultsButtonSelected:NO];// 設置搜索結果按鈕是否選中

[self.searchBar setShowsSearchResultsButton:YES];// 是否顯示搜索結果按鈕

[self.searchBar setSearchTextPositionAdjustment:UIOffsetMake(30, 0)];// 設置搜索框中文本框的文本偏移量

[self.searchBar setInputAccessoryView:_btnHide];// 提供一個遮蓋視圖

[self.searchBar setKeyboardType:UIKeyboardTypeEmailAddress];// 設置鍵盤樣式

// 設置搜索框下邊的分欄條

[self.searchBar setShowsScopeBar:YES];// 是否顯示分欄條

[self.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"Singer",@"Song",@"Album", nil]];// 分欄條,欄目

[self.searchBar setScopeBarBackgroundImage:[UIImage imageNamed:@"image3"]];// 分欄條的背景顏色

[self.searchBar setSelectedScopeButtonIndex:1];// 分欄條默認選中的按鈕的下標

[self.searchBar setShowsBookmarkButton:YES];// 是否顯示右側的“書圖標”

[self.searchBar setShowsCancelButton:YES];// 是否顯示取消按鈕

[self.searchBar setShowsCancelButton:YES animated:YES];

// 是否提供自動修正功能(這個方法一般都不用的)

[self.searchBar setSpellCheckingType:UITextSpellCheckingTypeYes];// 設置自動檢查的類型

[self.searchBar setAutocorrectionType:UITextAutocorrectionTypeDefault];// 是否提供自動修正功能,一般設置為UITextAutocorrectionTypeDefault

self.searchBar.delegate = self;// 設置代理

[self.searchBar sizeToFit];

myTableView.contentInset = UIEdgeInsetsMake(CGRectGetHeight(self.searchBar.bounds), 0, 0, 0);

[self.view addSubview:myTableView];

[myTableView addSubview:self.searchBar];

```

#2.代理方法

```

//搜索框中的內容發生改變時 回調(即要搜索的內容改變)

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{

NSLog(@"changed");

if (_searchBar.text.length == 0) {

[self setSearchControllerHidden:YES]; //控制下拉列表的隱現

}else{

[self setSearchControllerHidden:NO];

}

}

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {

searchBar.showsCancelButton = YES;

for(id cc in [searchBar subviews])

{

if([cc isKindOfClass:[UIButton class]])

{

UIButton *btn = (UIButton *)cc;

[btn setTitle:@"取消" forState:UIControlStateNormal];

}

}

NSLog(@"shuould begin");

return YES;

}

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {

searchBar.text = @"";

NSLog(@"did begin");

}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {

NSLog(@"did end");

searchBar.showsCancelButton = NO;

}

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {

NSLog(@"search clicked");

}

//點擊搜索框上的 取消按鈕時 調用

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {

NSLog(@"cancle clicked");

_searchBar.text = @"";

[_searchBar resignFirstResponder];

[self setSearchControllerHidden:YES];

}

```

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容