在为UITextField设置文本后,无法调用shouldChangeCharactersInRange

时间:2012-11-26 01:46:38

标签: ios uitextfield uitextfielddelegate

我使用UITextField输入值,将其委托设置为父视图控制器,使用textField.text = @“some text”设置文本字段的文本值,委托函数textField:shouldChangeCharactersInRange:replacementString:不能被调用任何更多。 如何防止这种情况或在setText之后调用此函数? 提前致谢, 抱歉我的英语不好。 更新:textField:shouldChangeCharactersInRange:replacementString:自第二次点击“退格”后无法调用。

2 个答案:

答案 0 :(得分:0)

在代码中设置文本时,不应调用该方法。你为什么要这样做 - 你传递了你想要的确切文本,所以不需要更改或验证它。

答案 1 :(得分:0)

如果您的意思是委托中的方法停止被完全调用,则设置文本字段不是原因。你需要做一些其他的事情才能做到这一点。正如@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