1. ホーム
  2. ios

[解決済み] textField:shouldChangeCharactersInRange:` を使って、現在入力されている文字を含むテキストを取得するにはどうすればよいですか?

2022-08-25 03:06:45

質問

私は以下のようなコードで textField2 のテキストコンテンツが textField1 のものと一致するように更新されます。 textField1 .

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

しかし、私が観測した出力は...

textField1が"123"のとき、textField2は"12"です。

textField1が"1234"のとき、textField2は"123"です。

...私が欲しいのは、このような場合です。

<ブロッククオート

textField1が"123"のとき、textField2は"123"。

textField1が"1234"のとき、textField2は"1234"です。

何が間違っているのでしょうか?

どのように解決すればよいのでしょうか?

-shouldChangeCharactersInRange と呼ばれる の前に テキストフィールドは実際にテキストを変更するので、古いテキストの値が取得されるわけです。更新後のテキストを取得するために使用します。

[textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]];