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;
}
ベストアンサー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
。