La mia app si arresta in modo anomalo quando si tenta di annullare l'operazione su UISearchBar
. Nella mia app Ho codice per impedire di entrare il segno '%' nella barra di ricerca e per fare questo si sostituisce una% a @ "" nel metodo textDidChange come di seguito:"[NSbigMutableString substringWithRange:]: Intervallo {0, 10} fuori limite; lunghezza stringa 9" errore con Annulla
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
}
Quindi, se digito il testo "abc % xyz ", il testo finale visibile sulla barra di ricerca sarebbe" abcxyz ". No quando clicco annulla, vedo 'xyz' viene cancellato e continuo a vedere 'abc' sulla barra di ricerca invece di cancellare 'abcxyz' tutto in una volta.
Ora, se faccio di nuovo clic su Annulla per cancellare "abc", la mia app si arresta in modo anomalo con l'errore [NSBigMutableString substringWithRange:]: Range out of bounds
.
Suppongo che anche se '%' viene sostituito da @ "", il gestore di annullamento potrebbe ancora tenerlo e quindi l'intervallo sta andando fuori limite.
Ho provato [searchBar.undoManager removeAllActions];
in textDidChange
dopo aver sostituito% con @ "", ma non ha aiutato. Ecco il codice:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
[searchBar.undoManager removeAllActions];
}
Domanda: Chiunque ha affrontato problema simile prima d'ora? Come gestisco l'annullamento?
Anche se removaAllActions ha lavorato per me. Alla fine abbiamo deciso di disattivare l'oscillazione per annullare la nostra app. – SuperGuyAbe