I am trying to implement UISearchBar delegate
-(BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string{
NSCharacterSet *set = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzQWERTYUIOPLKJHGFDSAZXCVBNM0123456789!@#$%^&*()_+./?'\"\\*- "] invertedSet];
const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
string = [[string componentsSeparatedByCharactersInSet:set] componentsJoinedByString:@""];
int isBackSpace = strcmp(_char, "\b");
if((string!=nil && ![string isEqualToString:@""]) || isBackSpace == -8)
{
return YES;
}
return NO;
}
and for search Button clicked
-(void) searchBarSearchButtonClicked:(UISearchBar *)searchBarSender{[mySearchBar resignFirstResponder];
}
but searchBarSearchButtonClicked delegate is never fired.
I tried removing shouldChangeTextInRange then it is being called. What i am doing wrong?
Found the answer Here
It was due to i was not passing \n character in allowed characters and search uses \n to be called.