1. ホーム
  2. ios

[解決済み] UITextFieldのテキスト変更イベント

2022-03-16 01:10:13

質問

textFieldのテキストが変更された場合、どのように検出することができますか?デリゲートメソッド shouldChangeCharactersInRange は何かと使えるのですが、私のニーズを正確に満たすものではありませんでした。なぜなら、それがYESを返すまで、textFieldのテキストは他のオブザーバー・メソッドから利用できないからである。

例)私のコードでは calculateAndUpdateTextFields は、ユーザーが入力した、更新されたテキストを取得しませんでした。

のようなものを取得する方法はないのでしょうか? textChanged Java のイベントハンドラです。

- (BOOL)textField:(UITextField *)textField 
            shouldChangeCharactersInRange:(NSRange)range 
            replacementString:(NSString *)string 
{
    if (textField.tag == kTextFieldTagSubtotal 
        || textField.tag == kTextFieldTagSubtotalDecimal
        || textField.tag == kTextFieldTagShipping
        || textField.tag == kTextFieldTagShippingDecimal) 
    {
        [self calculateAndUpdateTextFields];

    }

    return YES;
}

解決方法は?

から uitextfieldのテキスト変更のコールバックを行う適切な方法 :

UITextFieldコントロールに送られる文字をこんな感じでキャッチしています。

// Add a "textFieldDidChange" notification method to the text field control.

Objective-Cの場合。

[textField addTarget:self 
              action:@selector(textFieldDidChange:) 
    forControlEvents:UIControlEventEditingChanged];

Swiftでは

textField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)

そして、その中の textFieldDidChange メソッドで textField の内容を確認し、必要に応じてテーブルビューを再読み込みすることができます。

それを利用して calculateAndUpdateTextFields (計算と更新のテキストフィールド) selector .