0

簡単な質問かもしれませんが、正しい方法がわかりません。

私は持っていUITextFieldます。このテキストフィールド内に挿入されたテキストを検証する必要があるため、現在、次のようなUITextFieldDelegate方法を使用しています。- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
   // do validation here
   // return YES or NO depending on previous validation
}

いくつかのテキストフィールドがあり(それらは検証が実行される同じコントローラーに属していない)、テキストフィールド検証コードを複製したくないので、同様の検証を一元化するためのエレガントな方法をどのように実現できますか?サブクラス化が正しい方法かどうかはわかりませんが、この場合、同じアプリのさまざまな部分で同じ委任方法(上記の方法)を使用する必要があります。

前もって感謝します。

4

1 に答える 1

2

これは、検証コードが必要とする情報の量によって異なります。YES または NO を返すかどうかを決定するために の引数textField:shouldChangeCharactersInRange:replacementString:だけが必要な場合は、すべての textField に同じデリゲートを使用できます。

検証の決定を下すために以前の検証に関する情報を追跡して保存する必要がある場合、最も簡単な方法は、すべての状態をオブジェクトにパッケージ化し、それぞれが特定の UITextField に対応するこれらのオブジェクトの配列を持つことです。次に、textField:shouldChangeCharactersInRange:replacementString:渡された textField に対応する状態を使用します。

于 2012-03-08T17:11:59.693 に答える