使用“textField:应该改变字符”InRange:‘,如何获得包含当前类型字符的文本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我正在使用下面的代码来尝试textField2更新文本内容以匹配textField1每当用户输入textField1

- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {    
  if (theTextField == textField1){    
     [textField2 setText:[textField1 text]];    
  }
}

然而,我观察到的输出是...

textfield 2为“12”,而textfield 1为“123” TextFid 2为“123”,而textFid 1为“1234”

当我想要的是

textfield 2是“123”,而textfield 1是“123” TextFid 2为“1234”,而textFid 1为“1234”

我做错什么了?

提问于
用户回答回答于

-shouldChangeCharactersInRange获取调用以前Text字段实际上更改了它的文本,这就是为什么你要得到旧的文本值。要在更新后获取文本,请使用:

[textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]];
用户回答回答于
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string];

    NSLog(@"%@",searchStr);
    return YES;
}

扫码关注云+社区