あなたの状況では、 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;
}