2013-08-29 81 views
3

我有一個包含許多UITextfields的表單,比如名稱,密碼,電子郵件等等,在驗證過程中,我想顯示錯誤信息各自的文本字段。iPhone - 在UITextfield下面顯示錯誤信息的最佳方式是什麼

這樣做的最好方法是什麼?任何例子都會有幫助。

+0

難怪你的名字是「Flash Thunder」.... – user694688

+1

在文本框下面放置了一個標籤,並在那裏顯示錯誤。將標籤和文本字段包裝到一個自定義控件中以獲得更清晰的代碼 – Vladimir

回答

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 
    } 
} 
+0

謝謝。我的疑問是,剩餘的下面的文本字段將如何根據添加的新標籤對齊。我想讓errorLabel初始隱藏並在表單提交後顯示出來。 – user694688

+0

你有兩種解決方案:或者在每個文本框下方留出一個空白空間,或者在文本框已經退出後更新視圖 –

+0

是否有任何我可以參考的實現。 – user694688

相關問題