名前、パスワード、電子メールなどの多くの UITextfields を含むフォームがあり、検証中に、それぞれのテキスト フィールドの下にあるフィールドのエラー メッセージを表示したいと考えています。
これを行う最善の方法は何ですか。どんな例でも本当に役に立ちます。
テキストフィールド、ラベル、および検証ブロックを含む新しいオブジェクト モデルを作成します。テキストフィールドが最初の応答者を辞任するとき、ブロックを呼び出して有効かどうかを確認し、有効でない場合はラベルを表示します
このようなもの
@protocol ValidationTextFieldDelegate
-(void) validationTextField:(ValidationTextField*)textField didResignWithResult:(BOOL)result;
@end
@interface ValidationTextField : NSObject <UITextFieldDelegate>
@property (nonatomic, strong) UITextField *textField;
@property (nonatomic, strong) UILabel *errorLabel;
@property (copy) void(^validationBlock)(BOOL);
@property (nonatomic, assign) id<ValidationTextFieldDelegate> delegate;
@end
@implementation ValidationTextField
-(void)textFieldDidEndEditing:(UITextField*)textField {
BOOL result = self.validationBlock();
self.errorLabel.hidden = result;
if (self.delegate) {
[self.delegate validationTextField:self didResignWithResult:result];
}
}
そしてあなたのコントローラーで
-(void) validationTextField:(ValidationTextField*)textField didResignWithResult:(BOOL)result {
if (!result) {
int yOffset = textField.errorLabel.bounds.size.height;
// Update here the frames of your other textfields, adding the yOffset to their frames
}
}