当我尝试在UISearchBar
上尝试撤消时,我的应用崩溃。在我的应用我有代码,以防止输入搜索栏上的“%”标志,这样做它取代了为@“”在textDidChange方法如下:“[NSBigMutableString substringWithRange:]:范围{0,10}越界;字符串长度9”与撤消错误
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
}
所以,如果我输入文字“ABC %xyz“,在搜索栏上可见的最终文本将是'abcxyz'。不,当我点击撤消,我看到'xyz'被清除,我仍然在搜索栏上看到'abc',而不是一次清除'abcxyz'。
现在,如果我再次点击撤消清除'abc',我的应用程序崩溃,出现[NSBigMutableString substringWithRange:]: Range out of bounds
错误。
我假设即使'%'被替换为@“”,撤消管理器可能仍然持有它,因此范围超出界限。
我试过[searchBar.undoManager removeAllActions];
在textDidChange
之后我用@“”替换%,但没有帮助。下面是代码:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.searchBar.text = [searchText stringByReplacingOccurrencesOfString:@"%" withString:@""];
[searchBar.undoManager removeAllActions];
}
问:任何人之前遇到过类似的问题?我如何处理撤消?
虽然removaAllActions为我工作。我们最终选择关闭摇动来取消我们的应用程序。 – SuperGuyAbe