I want to change text in UISearchBar, but I don't want to call performSearch. I could cancelled the selector in two ways.
First way: I'm using method 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];
}
Second way: I'm using func2
-(void) func2
{
self.searchBar.delegate = nil;
self.searchBar.text = @"";
self.searchBar.delegate = self;
}
Do I have a 100% guarantee that I cancelled the selector in the func1? Is func2 better?
UPDATE: I'm looking for universal solutions, not just self.searchBar.text = @"";
or self.searchBar.text = @"Restaurants";
.