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}$"