今天我完成了我的第一个应用程序,我正在测试我的应用程序。好吧,我发现了一个bug,我找不到它的来源。在我的应用程序中,我有两个UITextfields。当用户填充其中一个时,另一个会使用委托方法textField:shouldChangeCharactersInRange:replacementString:自动完成,这里是该方法。当用户在任何文本字段中键入任何内容并按下iPad键盘上的undo按钮或摇动iPhone然后按下undo时,我的应用程序就会崩溃。下面是我收到的错误。
(Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSBigMutableString substringWithRange:]: Range {0, 2} out of bounds; string length 0').我真的很感谢你的帮助。
-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *stringToValidate = [[textField text] stringByReplacingCharactersInRange:range withString:string];
if ([stringToValidate isEqualToString:@""]) {
self.scoreToAddOfTeam1.text = nil;
self.scoreToAddOfTeam2.text = nil;
return YES;
}
if ([self validateInputsInsideAnNSString:stringToValidate]) {
if (textField == self.scoreToAddOfTeam1) {
self.scoreToAddOfTeam2.text = [self autocompleteOthersTeamPointsToAdd:stringToValidate];
} else {
self.scoreToAddOfTeam1.text = [self autocompleteOthersTeamPointsToAdd:stringToValidate];
}
} else {
if (textField == self.scoreToAddOfTeam1) {
self.scoreToAddOfTeam2.text = nil;
} else {
self.scoreToAddOfTeam1.text = nil;
}
}
return YES;
}
-(NSString *) autocompleteOthersTeamPointsToAdd: (NSString *) stringBasedToCalculate {
NSString *myString = [NSString stringWithFormat:@"%ld", (long)100 - [stringBasedToCalculate integerValue]];
return myString;
}发布于 2016-04-26 15:24:15
我认为您必须在应用程序中更改UIUndoManager的实现。查看此教程here
如果你不想在你的应用中处理抖动来撤消,那么你可以使用以下命令禁用它:
[UIApplication sharedApplication].applicationSupportsShakeToEdit = NO;https://stackoverflow.com/questions/23186566
复制相似问题