0

今、私はiOSで辞書アプリケーションを作成しています。私のアプリでは、オートコンプリート検索にUISearchDisplayControllerでUISearchBarのtextDidChangeイベントを使用しました。

したがって、SearchBarに単語を入力すると、データベースで自動的に検索されます。ただし、[設定]にオートコンプリート検索をオフにする機能があります。環境設定でオートコンプリート機能をオフにした後も、TextDidChangeイベントでオートコンプリート検索が行われます。

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

では、UISearchBarからTextDidChangeイベントをオフにするにはどうすればよいですか?よろしければお知らせください。

よろしくお願いします、

4

3 に答える 3

2

あなたの状況では、 textDidChange イベントを抑制したくありません。代わりに、[検索] ボタンがクリックされていない限り、 UISearchDisplayDelegate のshouldReloadTableForSearchString:メソッドを返す必要があります。NO

これを追跡するために、ブール ivar を作成できます。が呼び出されたときに ivar を NO に設定textDidChangeし、 が呼び出されたときに YES に設定しsearchBarSearchButtonClicked:ます。次に、あなた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;
}
于 2012-04-16T15:15:19.273 に答える
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 
       }
于 2012-04-16T17:07:40.110 に答える
1

いつでもbool変数を作成して、オートコンプリートがオンかどうかを確認できます...検索できるかどうかに基づいて。

于 2012-04-16T15:00:50.937 に答える