【问题标题】:shouldChangeCharactersInRange cannot be called after set text for UITextField为 UITextField 设置文本后无法调用 shouldChangeCharactersInRange
【发布时间】:2012-11-26 01:46:38
【问题描述】:

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

【问题讨论】:

    标签: ios uitextfield uitextfielddelegate


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您的意思是委托中的方法完全停止调用,设置文本字段不是原因。你需要做其他事情才能导致这种情况。正如@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; // 或 = @"abc.."; } 返回是; } 点击“退格”键后,无法再调用此委托函数(如果 setText 在其他委托函数中,也会发生)
      • @jptsetung 回答了这个问题,但我想找到解决方案来防止它。 stackoverflow.com/questions/4674023/…
      • 对不起,如果我再输入一次“退格”,就会发生这种情况。
      猜你喜欢
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多