Задача 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 для вызова.

Другие вопросы по тегам