UISearchBar是系統自帶的搜索控件 繼承於UIView
一.相關屬性
seacbar.prompt = @"頂部提示信息";
seacbar.placeholder = @"我是佔位文字";
seacbar.text = @"我是搜索的文字";
//右側按鈕相關 四個按鈕默認NO
//是否顯示圖書按鈕
seacbar.showsBookmarkButton = YES;
//取消按鈕
seacbar.showsCancelButton = YES;
//搜索結果按鈕是否顯示
seacbar.showsSearchResultsButton = YES;
//搜索按鈕是否選中
seacbar.searchResultsButtonSelected = YES;
//光標顏色
seacbar.tintColor = [UIColor orangeColor];
//搜索框背景顏色
seacbar.barTintColor = [UIColor purpleColor];
//搜索框背景色和圖片
seacbar.backgroundColor = [UIColor yellowColor];
//風格,black黑色,default默認 白色框,灰色背景
seacbar.barStyle = UIBarStyleBlack;
//搜索框背景顏色是否顯示, default(默認),Prominent(顯示),minima(顯示顯示的是backgroundColor的顏色,)
seacbar.searchBarStyle = UISearchBarStyleProminent;
//總結幾種背景色調用 當同時設置了barTintColor,backgroundColor的時候並且searchBarStyle沒有設置時,顯示的是默認的Default,當變成minima的時候背景色顯示的backgroundColor
//搜索框背景圖片(無效)
seacbar.backgroundImage = [UIImage imageNamed:@"timg.jpeg"];
//修改搜索框左邊按鈕圖片
[seacbar setImage:[UIImage imageNamed:@"timg.jpeg"]forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
//搜索框背景偏移量
seacbar.searchFieldBackgroundPositionAdjustment = UIOffsetMake(9, 3);
//輸入文字的偏移量
seacbar.searchTextPositionAdjustment = UIOffsetMake(1, 1);
//顯示和隱藏按鈕是否有動畫效果
[seacbar setShowsCancelButton:YES animated:NO];
二.第一響應者
第一響應者
[searchBar becomeFirstResponder]
取消第一響應者
[searchBar resignFirstResponder];
三.設置右側取消按鈕字體
for(id cc in [searchBar subviews])
{
if([cc isKindOfClass:[UIButton class]])
{
UIButton *btn = (UIButton *)cc;
[btn setTitle:@"取消" forState:UIControlStateNormal];
}
}
[searchBar setShowsCancelButton:YES animated:YES];
四.代理方法
// 1. 將要開始編輯文本時會調用該方法,返回 NO 將不會變成第一響應者
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
- // 2. 開始輸入文本會調用該方法
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
- // 3. 將要結束編輯文本時會調用該方法,返回 NO 將不會釋放第一響應者
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
- // 4. 結束編輯文本時調用該方法
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
- // 5. 文本改變會調用該方法(包含clear文本)
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
- // 6. 文字改變前會調用該方法,返回NO則不能加入新的編輯文字
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
- // 7. 鍵盤上的搜索按鈕點擊的會調用該方法
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
- // 8. 搜索框右側圖書按鈕點擊會調用該方法
- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar
- // 9.點擊取消按鈕會調用該方法
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
- // 10.搜索結果列表按鈕被按下會調用該方法
- (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar
- // 11. 搜索框的附屬按鈕視圖中切換按鈕會調用該方法
- (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope