一、基本介紹
UISearchBar 是系統默認提供的搜索框,可以用於各種 iOS 應用中。其提供了一個文本框和一個用於響應用戶點擊的取消按鈕,方便用戶輸入搜索關鍵字,同時也能夠在用戶輸入關鍵字時實時顯示建議詞。以下是一個簡單的示例:
// 創建 UISearchBar 實例 searchBar = [[UISearchBar alloc] init]; searchBar.placeholder = @"搜索"; [searchBar sizeToFit]; // 添加到視圖上 [self.view addSubview:searchBar];
上述代碼創建了一個 UISearchBar 實例,並將其添加到了視圖中。其中 placeholder 屬性代表搜索框內的提示文字。sizeToFit 方法會根據實際內容大小自適應搜索框大小。
二、屬性詳解
1. delegate
delegate 屬性用於設置 UISearchBar 的代理對象。代理對象需要遵循 UISearchBarDelegate 協議,並實現協議中的方法,以響應 UISearchBar 的事件。以下是一個示例:
@interface SearchViewController () <UISearchBarDelegate> @property (nonatomic, strong) UISearchBar *searchBar; @end @implementation SearchViewController - (void)viewDidLoad { [super viewDidLoad]; // 創建 UISearchBar 實例 self.searchBar = [[UISearchBar alloc] init]; self.searchBar.delegate = self; [self.searchBar sizeToFit]; // 添加到視圖上 [self.view addSubview:self.searchBar]; } #pragma mark - UISearchBarDelegate - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { // 處理搜索按鈕點擊事件 } @end
以上代碼中,我們將 SearchViewController 設置為 UISearchBar 的代理對象,並實現了 searchBarSearchButtonClicked 方法來響應搜索按鈕的點擊事件。
2. placeholder
placeholder 屬性用於設置搜索框內的提示文字,當用戶還沒有輸入任何內容時,會顯示該提示文字。示例如下:
searchBar.placeholder = @"請輸入搜索關鍵字";
3. showsCancelButton
showsCancelButton 屬性用於控制取消按鈕的顯示狀態,可以通過該屬性在不同的場景下動態控制取消按鈕是否顯示。示例如下:
// 隱藏取消按鈕 searchBar.showsCancelButton = NO; // 顯示取消按鈕 searchBar.showsCancelButton = YES;
4. text
text 屬性用於獲取或設置搜索框內的文本內容。我們可以在 UISearchBarDelegate 對象的 searchBar:textDidChange 方法中獲取該屬性的值,以實現實時搜索的功能。示例如下:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { // 處理搜索框文本改變事件 NSLog(@"當前搜索框內的文本內容為:%@", searchText); }
5. autocapitalizationType
autocapitalizationType 屬性用於控制文本自動大寫的方式,可以取值為 None、Words、Sentences 和 AllCharacters。示例如下:
// 不自動大寫 searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone; // 每個單詞首字母大寫 searchBar.autocapitalizationType = UITextAutocapitalizationTypeWords; // 每個句子首字母大寫 searchBar.autocapitalizationType = UITextAutocapitalizationTypeSentences; // 所有字母都大寫 searchBar.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
三、UISearchBarDelegate 協議方法
UISearchBarDelegate 協議提供了多個方法,以下是其中一部分的解釋:
1. searchBarCancelButtonClicked:
當用戶點擊取消按鈕時,觸發該事件。
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { // 處理取消按鈕點擊事件 }
2. searchBarSearchButtonClicked:
當用戶點擊搜索按鈕時,觸發該事件。
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { // 處理搜索按鈕點擊事件 }
3. searchBar:textDidChange:
當搜索框內的文本發生改變時,觸發該事件。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { // 處理搜索框文本改變事件 }
4. searchBarShouldBeginEditing:
當搜索框即將開始編輯時,觸發該事件。
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar { // 處理搜索框即將開始編輯事件 return YES; }
5. searchBarShouldEndEditing:
當搜索框即將結束編輯時,觸發該事件。
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar { // 處理搜索框即將結束編輯事件 return YES; }
四、完整示例
@interface SearchViewController () <UISearchBarDelegate> @property (nonatomic, strong) UISearchBar *searchBar; @end @implementation SearchViewController - (void)viewDidLoad { [super viewDidLoad]; // 創建 UISearchBar 實例 self.searchBar = [[UISearchBar alloc] init]; self.searchBar.delegate = self; self.searchBar.placeholder = @"請輸入搜索關鍵字"; self.searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone; self.searchBar.showsCancelButton = YES; [self.searchBar sizeToFit]; // 添加到視圖上 [self.view addSubview:self.searchBar]; } #pragma mark - UISearchBarDelegate - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { // 處理取消按鈕點擊事件 } - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { // 處理搜索按鈕點擊事件 } - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { // 處理搜索框文本改變事件 } - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar { // 處理搜索框即將開始編輯事件 return YES; } - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar { // 處理搜索框即將結束編輯事件 return YES; } @end
原創文章,作者:WUAJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/148184.html