"[NSBigMutableString substringWithRange:]: Rango {0, 10} fuera de los límites; error de longitud de cadena de 9 "con Deshacer
Mi aplicación se bloquea cuando intento deshacerUISearchBar
. En mi aplicación tengo un código para evitar ingresar un signo '%' en la barra de búsqueda y para hacer esto reemplaza un% a @ "" en el método textDidChange como se muestra a continuación:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
}
Entonces, si escribo el texto "abc% xyz", el texto final visible en la barra de búsqueda sería 'abcxyz'. No, cuando hago clic en Deshacer, veo que 'xyz' se borra y aún veo 'abc' en la barra de búsqueda en lugar de borrar 'abcxyz' de una sola vez.
Ahora, si hago clic en Deshacer nuevamente para borrar 'abc', mi aplicación falla[NSBigMutableString substringWithRange:]: Range out of bounds
error.
Supongo que a pesar de que '%' sea reemplazado por @ "", el administrador de deshacer aún podría estar reteniéndolo y, por lo tanto, el rango está fuera de límites.
Lo intenté[searchBar.undoManager removeAllActions];
entextDidChange
después de reemplazar% con @ "", pero no ayudó. Aquí está el código:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
[searchBar.undoManager removeAllActions];
}
Pregunta: ¿Alguien se enfrentó a un problema similar antes? ¿Cómo manejo el deshacer?