5

ユーザー入力に対して一連の検証を行い、編集を終了できるかどうかを判断する UITextFieldDelegate があります。ある特定の例では、フィールドを空白のままにすることは無効です。

現在textField:shouldChangeCharactersInRange:replacementString:、ユーザーが編集するたびにテキスト入力を検証するために使用しています。

問題は次のとおりです。ユーザーがフィールドを (小さな「x」ボタンで) クリアすると、検証コードが「無効」モードになり、ユーザーが有効なテキストを入力するまでナビゲートできなくなります。その後、ユーザーが電話を振って古いテキストを取得した場合、shouldChangeCharactersInRangeは再び呼び出されず、デリゲートはすべてが再び正常であることを認識せずに「無効」状態のままになります。

正しく使用しているかどうかはわかりませんが、組み込みの UITextFieldDelegate 機構が元に戻す/やり直しによるテキストの変更に対応できないようです。

このシナリオで適切な検証を行う最善の方法は何ですか? 実装するために本当に UITextField をサブクラス化する必要がありmotionEnded:withEvent:ますか? UITextField の編集処理は、ユーザーが実際に入力したか、元に戻すために発生したかに関係なく、実際に独立しているように見えるので、実際にそのルートに行かなければならない場合は困惑します。

4

1 に答える 1

5

メソッドを UIControlEventEditingChanged イベントに接続します (IB では「値の変更」ではなく「編集の変更」)。

これは、テキスト フィールドが変更されるたびに発生するように見えます。

于 2010-10-12T21:26:09.640 に答える