2012-04-16 9 views
0

私はiOSで辞書アプリケーションを作成しています。 私のアプリでは、自動完全検索のためにUISearchDisplayControllerでUISearchBarのtextDidChangeイベントを使用しました。iOSでTextDidChangeイベントを無効にするにはどうすればよいですか?

検索バーに単語を入力すると、自動的にデータベースで検索されます。 しかし、私はオートコンプリートの検索を無効にするために、環境設定で機能を持っています。 環境設定でオートコンプリート機能をオフにした後でも、TextDidChangeイベントでの検索は自動的に完了します。

今回はTextDidChangeイベントが欲しくありません。検索バーに完全な単語を入力してからキーボードから検索ボタンをクリックして検索します。

UISearchBarからTextDidChangeイベントをオフにするにはどうすればよいですか? 大丈夫かどうか教えてください。

よろしく、

答えて

1

あなたは常にブール変数を作成し、自動補完が上であるかどうか...あなたが検索したりすることができないことに基づいて確認することができます。

+0

私はすでにBOOL変数を使用しますが、私はプログラムによる中textDidChangeイベントをオフにする方法を知りたいです。 –

+0

その代理メソッドは、あなたはそれを書くこともできなくても、それを無効にする方法はありません。 –

2

あなたのシチュエーションでは、textDidChangeイベントを抑制したくありません。検索ボタンがクリックされていない限り、UISearchDisplayDelegateのshouldReloadTableForSearchString:メソッドがNOを返すようにします。

これを追跡するためにブール値のivarを作成することができます。 textDidChangeが呼び出された場合はivarをNOに設定し、searchBarSearchButtonClicked:を呼び出すとYESに設定します。その後、あなたのshouldReloadTableForSearchString:でテストを行うことができます。

EDIT:コード例を拡張して明確にしました。 (この例では、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

このイベントでどのように条件をチェックできますか? –

+0

私の更新されたコードで例を確認してください。 – jonkroll

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 
     } 
関連する問題