UISearchBarのテキストを変更したいが、performSearchを呼びたくない。セレクタを2つの方法でキャンセルできました。セレクタをキャンセルする必要があります。セレクタをキャンセルしたことを100%保証していますか?
最初の方法:func1メソッドを使用しています。
@property (nonatomic, retain) IBOutlet UISearchBar *searchBar;
-(void) func1
{
self.searchBar.delegate = self;
self.searchBar.text = @"";
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(performSearch:) object:nil];
}
- (void)searchBar:(UISearchBar *)searchBar_ textDidChange:(NSString *)searchText
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(performSearch:) object:nil];
[self performSelector:@selector(performSearch:) withObject:nil afterDelay:1];
}
第二の方法:私はfunc2の
-(void) func2
{
self.searchBar.delegate = nil;
self.searchBar.text = @"";
self.searchBar.delegate = self;
}
を使用して、私はfunc1の中でセレクタをキャンセルし、100%の保証を持っていますよ? func2は良いですか?
更新:self.searchBar.text = @"";
またはself.searchBar.text = @"Restaurants";
以外の汎用ソリューションを探しています。
searchBarでsearchTextが空であるかどうかをチェックしない理由:textDidChange :?あなたはセレクタperformSearchを呼び出す必要はありません。 – ian