Sagit.Framework For IOS 開發框架入門教程15:表單校驗事件:require、requireGroup、requireBeforeClick用法。
對於表單的提交事件中,常常在提交前,會驗證一下表單的內容是否爲空,格式是否正確。本篇講述一下框架中關於表單校驗事件的相關使用方法。git
前言:對於表單的提交事件中,常常在提交前,會驗證一下表單的內容是否爲空,格式是否正確。框架
本篇講述一下框架中關於表單校驗事件的相關使用方法。iview
一、方法定義:@interface UIView (STUIViewValue)#pragma mark 設置數據校驗//!【表單設置】用於校驗輸入的必填、格式。(點擊事件時被檢測觸發)-(UIView*)require:(BOOL)yesNo;-(UIView*)require:(BOOL)yesNo regex:(NSString*)regex;-(UIView*)require:(BOOL)yesNo regex:(NSString*)regex tipName:(NSString*)tipName;//!用於校驗的分組觸發(表單、按鈕可設置)。-(UIView*)requireGroup:(NSString*)name;#pragma mark 觸發數據校驗//!【按鈕設置】點擊事件設置是否觸發驗證。-(UIView*)requireBeforeClick:(BOOL)yesNo;
//!【按鈕設置】若須要將提示語顯示在指定人UILabel中。
-(UIView*)requireTipLabel:(id)nameOrLabel;ide
//!觸發驗證。(內部點擊觸發)-(BOOL)exeRequire; @end二、基礎方法使用:(判斷不能爲空、格式錯誤)
添加完UIView後,增長require屬性設置便可。post
[[[[[sagit addTextField:@"UserName" placeholder:@"手機號碼" font:0 color:MainFontColor] width:372 height:68] onRight:STPreView x:30 y:-10] require:YES regex:RexMobile] requireGroup:@"aa"];
能夠指定分組(若是不一樣的按鈕事件須要觸發不一樣的驗證的話),不然能夠不指定。ui
再添加一個:orm
[[[[[sagit addTextField:@"password" placeholder:@"密碼" font:0 color:MainFontColor] width:372 height:68] onRight:STPreView x:30 y:-10] require:YES regex:RexPassword] requireGroup:@"bb"];
這裏示例特地加上了requireGoup的用法,通常狀況不須要分組沒用到。blog
按鈕點擊事件:(指定requireBeforeClick:YES),須要觸發分組時,能夠指定分組(多個能夠用逗號分隔)教程
[[[[[sagit addButton:@"Login" title:@"登陸" font:40] width:450 height:70] onBottom:@"pwdLine" y:149] requireBeforeClick:YES] requireGroup:@"aa,bb"];- (void)LoginClick:(UIButton *)sender { // if(![self isMatch:@"手機號" name:@"UserName" regex:RexMobile]// || ![self isMatch:@"密碼" name:@"password" regex:nil])// {// return;// } NSMutableDictionary *para = [self formData]; [para setValue:@(UserAccountType) forKey:@"AccountType"]; [self.http post:UrlLogin paras:para success:^(STHttpModel *result) { if (result.success) { Sagit.Global.Token=(NSString *)result.msg; [STNew(@"MainController") asRoot]; }else { [self.msgBox prompt:(NSString *)result.msg]; } }]; }
被註釋掉的是之前的寫法,如今都在配置裏實現,不須要寫了。事件
運行效果:
提示語須要外置到UILabel顯示時,對按鈕指定屬性即:
[STLastButton requireTipLabel:label名字或Label自己]
三、高級使用方法:判斷兩個輸入框值一致、圖形驗證碼輸入框是否正確
對於正則的輸入,除了能夠輸入正常的正則外,即"^.......$"。
也能夠輸入其它UIView的name名稱。
當輸入的不是正則,而是其它uiview的name的時候,則觸發輸入框一致、或圖型驗證碼對錯驗證。
這裏就不上圖了。
總結:經過將基礎驗證歸到屬性設置,能夠簡少大量業務代碼的判斷。
上面示例用到的兩個正則的宏定義:
#pragma mark 正則//手機號#define RexMobile @"^1[3456789]\\d{9}$"//密碼驗證#define RexPassword @"^[A-Za-z0-9]{6,16}$"