UITextField テキスト変更イベント 質問する

UITextField テキスト変更イベント 質問する

textField 内のテキストの変更を検出するにはどうすればよいでしょうか。デリゲート メソッドはshouldChangeCharactersInRangeある程度機能しますが、私のニーズを正確に満たすことはできませんでした。YES を返すまで、textField テキストは他のオブザーバー メソッドでは使用できません。

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

textChangedJava イベント ハンドラーのようなものを取得する方法はありますか。

- (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;
}

ベストアンサー1

から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

おすすめ記事