Задача C - searchBarSearchButtonClicked делегат UIsearchBar не вызывается после добавления shouldChangeTextInRange
Я пытаюсь реализовать UISearchBar делегат
-(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;
}
и для поиска кнопка нажата
-(void) searchBarSearchButtonClicked:(UISearchBar *)searchBarSender{[mySearchBar resignFirstResponder];
}
но делегат searchBarSearchButtonClicked никогда не запускается.
Я попытался удалить shouldChangeTextInRange, затем он вызывается. Что я делаю не так?
1 ответ
Решение
Здесь нашли ответ
Это произошло из-за того, что я не передавал символ \n в разрешенных символах, а поиск использует \n для вызова.