3

名前、パスワード、電子メールなどの多くの UITextfields を含むフォームがあり、検証中に、それぞれのテキスト フィールドの下にあるフィールドのエラー メッセージを表示したいと考えています。

これを行う最善の方法は何ですか。どんな例でも本当に役に立ちます。

4

1 に答える 1

1

テキストフィールド、ラベル、および検証ブロックを含む新しいオブジェクト モデルを作成します。テキストフィールドが最初の応答者を辞任するとき、ブロックを呼び出して有効かどうかを確認し、有効でない場合はラベルを表示します

このようなもの

@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
    }
}
于 2013-08-29T12:12:52.540 に答える