“[NSBigMutableString substringWithRange:]: intervalo {0, 10} fora dos limites; erro de 9 "de comprimento de cadeia com Desfazer
Meu aplicativo falha quando tento desfazer a açãoUISearchBar
. No meu aplicativo, tenho um código para impedir a inserção de um sinal '%' na barra de pesquisa e, para isso, substitui um% para @ "" no método textDidChange, conforme abaixo:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
}
Portanto, se eu digitar o texto "abc% xyz", o texto final visível na barra de pesquisa será 'abcxyz'. Não, quando clico em desfazer, vejo 'xyz' sendo limpo e ainda vejo 'abc' na barra de pesquisa, em vez de limpar 'abcxyz' de uma só vez.
Agora, se eu clicar em desfazer novamente para limpar 'abc', meu aplicativo trava com[NSBigMutableString substringWithRange:]: Range out of bounds
erro.
Estou assumindo que, embora '%' seja substituído por @ "", o gerente de desfazer ainda pode estar com ele e, portanto, o intervalo está fora dos limites.
eu tentei[searchBar.undoManager removeAllActions];
notextDidChange
depois de substituir% por @ "", mas não ajudou. Aqui está o código:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
[searchBar.undoManager removeAllActions];
}
Pergunta, questão: Alguém já enfrentou problemas semelhantes antes? Como eu manejo a desfazer?