Ios 在为UITextField设置文本后不能调用ShouldChangeCharactersRange

Ios 在为UITextField设置文本后不能调用ShouldChangeCharactersRange,ios,uitextfield,uitextfielddelegate,Ios,Uitextfield,Uitextfielddelegate,我正在使用UITextField输入值,将其委托设置为父视图控制器,在使用textField.text=@“some text”设置文本字段的文本值后,委托函数textField:shouldChangeCharactersRange:replacementString:无法再调用。 如何防止此情况或允许在setText之后调用此函数? 提前感谢,, 对不起,我的英语很差。 UPDATE:textField:ShouldChangeCharactersRange:replacementStrin

我正在使用UITextField输入值,将其委托设置为父视图控制器,在使用textField.text=@“some text”设置文本字段的文本值后,委托函数textField:shouldChangeCharactersRange:replacementString:无法再调用。 如何防止此情况或允许在setText之后调用此函数? 提前感谢,, 对不起,我的英语很差。
UPDATE:textField:ShouldChangeCharactersRange:replacementString:在我第二次点击“backspace”后无法调用。

在代码中设置文本时不应调用该方法。为什么要这样做呢?您传递的正是您想要的文本,因此不需要更改或验证它

如果您的意思是委托中的方法完全停止调用,则设置文本字段不是原因。你需要做些别的事情来引起这一切。正如@rdelmar所说,作业不会调用它,但将来编辑时会调用它。例如,如果我写

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.textField.text = @"View will appear";
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSLog(@"Replacement: %@", string);
    return YES;
}
…我明白了

2012-11-25 21:02:34.456 Hello World[6669:c07] Replacement: H
2012-11-25 21:02:34.954 Hello World[6669:c07] Replacement: e
2012-11-25 21:02:35.838 Hello World[6669:c07] Replacement: l
2012-11-25 21:02:35.974 Hello World[6669:c07] Replacement: l
2012-11-25 21:02:36.162 Hello World[6669:c07] Replacement: o

我实现的委托函数如下:-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string{if([string isEqualToString:@”“]){textField.text=nil;//or=@“abc..”}返回YES;}点击“backspace键后,无法再调用此委托函数(如果在其他委托函数中调用setText,也会发生这种情况)@jptsetung解决了此问题,但我想找到解决方案来防止其发生。对不起,如果我再键入一次“backspace”,就会发生这种情况。