2012-04-16 20 views
0

現在我正在iOS中創建字典應用程序。 在我的應用程序中,我使用UISearchBar的textDidChange事件和UISearchDisplayController進行自動完成搜索。如何關閉iOS中的TextDidChange事件?

所以,當我在SearchBar中輸入一個單詞時,它會自動在數據庫中搜索。 但是,我有一個在首選項中關閉自動完成搜索功能。 我在首選項中關閉自動完成功能後,仍然使用TextDidChange事件自動完成搜索。

這次我不想要TextDidChange事件。我想在搜索欄中輸入完整的單詞後再搜索,然後從鍵盤上單擊搜索按鈕進行搜索。

那麼如何關閉UISearchBar的TextDidChange事件? 如果你確定,請讓我知道。

最好的問候,

回答

1

你總是可以創建一個布爾變量,並檢查自動完成打開或不...根據您可以搜索與否。

+0

我已經使用了布爾變量,但我想知道如何關閉textDidChange事件的編程方式。 – 2012-04-16 15:10:38

+0

其代表方法,你可以寫或不寫,你不能禁用它。 – 2012-04-16 15:14:24

2

在你的情況下,你不想壓制textDidChange事件。相反,您希望您的UISearchDisplayDelegate的shouldReloadTableForSearchString:方法返回NO,除非單擊「搜索」按鈕。

你可以創建一個布爾伊巴爾來跟蹤這個。當調用textDidChange時,將伊娃設置爲NO,並在調用searchBarSearchButtonClicked:時將其設置爲YES。然後在你的shouldReloadTableForSearchString:你可以做測試。

編輯:通過展開代碼示例進行說明。 (在這個例子中,我假設你已經設置了一個名爲isSearchButtonClicked的ivar)。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
    isSearchButtonClicked = NO; 
} 

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 
{ 
    isSearchButtonClicked = YES; 
} 

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 
{ 
    // returns YES if search button was clicked, otherwise return NO 
    return isSearchButtonClicked; 
} 
+0

如何檢查此事件中的狀況。 – 2012-04-16 15:31:16

+0

查看我的更新代碼以查看示例。 – jonkroll 2012-04-16 18:31:39

1
 - (void)filterContentForSearchText:(NSString*)searchText 
         scope:(NSString*)scope 
     { 
      //create a bool variable and check is Auto Complete searching is Yes or No 

      if YES then pass searchText 

      if no then Don't pass any thing unit user press the search button 

      after he press search button pass searchText 
     }