#define kSilentTag 0
#define kViolentTag 1
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
NSString *newString = [searchBar.text stringByReplacingCharactersInRange:range withString:text];
if ([newString length] >= 3) {
if(searchBar.tag == kSilentTag) {
searchBar.tag = kViolentTag;
[NSRunLoop cancelPreviousPerformRequestsWithTarget:self selector:@selector(searchBarSearchButtonClicked:) object:searchBar];
[self performSelector:@selector(searchBarSearchButtonClicked:) withObject:searchBar afterDelay:3.0];
}
}else{
searchBar.tag = kSilentTag;
}
return YES;
}
わかりました、これはこの回答の最終更新です。私は s を取るのが好きではないのでBOOL
、これを達成するために定義タグを作成しました。kSilentTag
kViolentTag
UISearchBar
重要なことですが、検索バーをリセットする (つまり空にする) 場合は、いつでもタグを元にkSilentTag
戻すようにしてください。
提案、セレクターを実行するために 3.0 の時間間隔を設定しました。ユーザーは何が起こっているのかを確実に感じるため、少し短く (1.0 かもしれません) 設定する必要があります。(以前に WindowsXP PC で感じたように)? ^_^