Moja aplikacja ulega awarii, gdy próbuję wykonać cofanie na UISearchBar
. W mojej aplikacji mam kodu, aby zapobiec wprowadzeniu „%” znak na pasku wyszukiwania i robi to zastępuje on% do @ „” w metodzie textDidChange jak poniżej:"[NSBigMutableString substringWithRange:]: Zakres {0, 10} poza zakresem, długość łańcucha 9" z Undo
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
}
Więc jeśli mam wpisać tekst „abc % xyz ", ostateczny tekst widoczny na pasku wyszukiwania byłby" abcxyz ". Nie, gdy klikam Cofnij, widzę, że "xyz" zostaje wyczyszczony i nadal widzę "abc" na pasku wyszukiwania zamiast czyścić "abcxyz" za jednym razem.
Teraz, jeśli kliknę ponownie cofnij, aby wyczyścić "abc", moja aplikacja ulega awarii z błędem [NSBigMutableString substringWithRange:]: Range out of bounds
.
Zakładam, że nawet jeśli "%" zostanie zastąpiony przez @ "", menedżer cofania może nadal go trzymać, a tym samym zakres wykracza poza granice.
Próbowałem [searchBar.undoManager removeAllActions];
w textDidChange
po zastąpieniu% z @ "", ale to nie pomogło. Oto kod:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
[searchBar.undoManager removeAllActions];
}
Pytanie: Ktoś w obliczu podobnego problemu wcześniej? Jak radzić sobie z cofaniem?
Choć removaAllActions pracował dla mnie. Ostatecznie zdecydowaliśmy się wyłączyć shake, by cofnąć naszą aplikację. – SuperGuyAbe