0

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?

Hassy
  • 5,068
  • 5
  • 38
  • 63

1 Answers1

0

Found the answer Here

It was due to i was not passing \n character in allowed characters and search uses \n to be called.

Community
  • 1
  • 1
Hassy
  • 5,068
  • 5
  • 38
  • 63