UITextField在第一次删除符号时出现奇怪的行为

当我推我的ViewController其中一个文本字段必须有文本,我做到了,这是一切都好

cell.textFieldMain.text = [NSString stringWithFormat:@"+7 (%@) %@-%@",[num substringToIndex:3], [num substringWithRange:NSMakeRange(3, 3)], [num substringFromIndex:6]]; 

我有把光标放在需要的地方的方法,因为我为textfield做了模板

我的方法:

 - (void)setCurcorForTextField:(UITextField *)textField position:(NSInteger)position { UITextPosition *newPosition = [textField positionFromPosition:textField.beginningOfDocument offset:position]; UITextRange *newRange = [textField textRangeFromPosition:newPosition toPosition:newPosition]; [textField setSelectedTextRange:newRange]; } 

在我改变我的方法

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //other conditions else { textField.text = [NSString stringWithFormat:@"+7 (%@) %@-%@",[num substringToIndex:3], [num substringWithRange:NSMakeRange(3, 3)], [num substringFromIndex:6]]; if (length == 7) [self setCurcorForTextField:textField position:14]; else if (length == 8) [self setCurcorForTextField:textField position:15]; else if (length == 9) [self setCurcorForTextField:textField position:16]; else if (range.length) [self setCurcorForTextField:textField position:17]; } } return YES; 

所以当我第一次尝试删除最后一个字符的时候,我把空白字段,但我必须有+7(123)456-789(电话号码有10个数字没有最后删除。在其他情况下,它是工作正常。在下次推ViewController,和tableview与这个textfield再次创build我没有麻烦,一切工作正常。

当我推视图ViewController我看到 在这里输入图像说明

我尝试删除最后一个字符和空字段出现

在这里输入图像说明

但在其他情况下,当我甚至再次推这个ViewController一切正常,我可以删除最后一个cahracter

在这里输入图像说明

当我删除所有的字符,然后input新的数字,然后编辑,开始编辑这个字段,并尝试删除 – 一切正常。 总是工作正常^但只有第一次工作不好