Sagit.Framework For IOS 開發框架入門教程15:表單校驗事件:require、requireGroup、requireBeforeClick用法。

   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}$"
相關文章
相關標籤/搜索