#import "ViewController.h"@interface ViewController ()@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//添加控件
//1.cardLable
UILabel *cardLable = [[UILabel alloc]init];
cardLable.text = @"Credit card example";
[self.view addSubview:cardLable];
cardLable.translatesAutoresizingMaskIntoConstraints = NO;
[self adddCustomLayoutContraint:cardLable withWidth:300 withHeight:40 withTop:30 withLeft:30];
//2.账号输入框
UITextField *accountTf = [[UITextField alloc]init];
accountTf.placeholder = @"0000 0000 0000 0000";
accountTf.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:accountTf];
accountTf.tag = 1;
accountTf.translatesAutoresizingMaskIntoConstraints = NO;
accountTf.delegate = self;
[self adddCustomLayoutContraint:accountTf withWidth:300 withHeight:40 withTop:70 withLeft:30];
//3.持卡人输入框
UITextField *cardholder = [[UITextField alloc]init];
cardholder.placeholder = @"MR CARDHOLDER";
cardholder.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:cardholder];
cardholder.tag = 2;
cardholder.translatesAutoresizingMaskIntoConstraints = NO;
cardholder.delegate = self;
[self adddCustomLayoutContraint:cardholder withWidth:200 withHeight:30 withTop:120 withLeft:30];
//4.日期
UITextField *datetext = [[UITextField alloc]init];
datetext.placeholder = @"MM/YY";
datetext.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:datetext];
datetext.tag = 3;
datetext.translatesAutoresizingMaskIntoConstraints = NO;
datetext.delegate = self;
[self adddCustomLayoutContraint:datetext withWidth:80 withHeight:30 withTop:120 withLeft:250];
//5.cvv
UILabel *cvv = [[UILabel alloc]init];
cvv.text = @"cvv";
[self.view addSubview:cvv];
cvv.translatesAutoresizingMaskIntoConstraints = NO;
[self adddCustomLayoutContraint:cvv withWidth:30 withHeight:40 withTop:150 withLeft:200];
//6.数字
UITextField *number = [[UITextField alloc]init];
number.placeholder = @"123";
number.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:number];
number.tag = 4;
number.translatesAutoresizingMaskIntoConstraints = NO;
number.delegate = self;
[self adddCustomLayoutContraint:number withWidth:50 withHeight:30 withTop:160 withLeft:250];
//5.具体日期
UILabel *dateandtimeLable = [[UILabel alloc]init];
dateandtimeLable.text = @"Date and time example";
[self.view addSubview:dateandtimeLable];
dateandtimeLable.translatesAutoresizingMaskIntoConstraints = NO;
[self adddCustomLayoutContraint:dateandtimeLable withWidth:200 withHeight:40 withTop:200 withLeft:30];
//6.年月日
UITextField *ddmmyyy = [[UITextField alloc]init];
ddmmyyy.placeholder = @"dd.mm.yyy";
ddmmyyy.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:ddmmyyy];
ddmmyyy.tag = 5;
ddmmyyy.translatesAutoresizingMaskIntoConstraints = NO;
ddmmyyy.delegate = self;
[self adddCustomLayoutContraint:ddmmyyy withWidth:150 withHeight:30 withTop:250 withLeft:30];
//6.时间
UITextField *time = [[UITextField alloc]init];
time.placeholder = @"hh:mm";
time.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:time];
time.tag = 6;
time.translatesAutoresizingMaskIntoConstraints = NO;
time.delegate = self;
[self adddCustomLayoutContraint:time withWidth:100 withHeight:30 withTop:250 withLeft:230];
}
-(void)adddCustomLayoutContraint:(UIView *)view withWidth:(CGFloat)width
withHeight:(CGFloat)height withTop:(CGFloat)top withLeft:(CGFloat)left
{
//宽的约束
NSLayoutConstraint *datetextw = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1.0 constant:width];
//高的约束
NSLayoutConstraint *datetexth = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0 constant:height];
[self.view addConstraint:datetextw];
[self.view addConstraint:datetexth];
//上间距
NSLayoutConstraint *datetexttop = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:top];
//左间距
NSLayoutConstraint *datetextleft = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:left];
[self.view addConstraint:datetexttop];
[self.view addConstraint:datetextleft];
}
//代理方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//取出字符串
NSString *tfStr = textField.text;
NSInteger tag = textField.tag;
//根据不同的输入框分别做出正则表达式的判断
switch (tag)
{
case 1:
{
//账号输入框
//正则表达式\d{4}\s\d{4}\s\d{4}\s\d{4}
NSString *accountRegexStr = @"\\d{4}\\s\\d{4}\\s\\d{4}\\s\\d{4}";
BOOL ifMatches = [self customMeches:tfStr ToRegexStr:accountRegexStr];
if (ifMatches == YES)
{
[[[UIAlertView alloc]initWithTitle:nil message:@"成功" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
else
{
[[[UIAlertView alloc]initWithTitle:nil message:@"失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
}
break;
case 2:
{
//持卡人
NSString *userRegexStr = @"\\w{2,4}";
BOOL ifMeches = [self customMeches:tfStr ToRegexStr:userRegexStr];
if (ifMeches == YES)
{
[[[UIAlertView alloc]initWithTitle:nil message:@"成功" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
else
{
[[[UIAlertView alloc]initWithTitle:nil message:@"失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
break;
}
case 3:
//日期
{
NSString *dateRegexStr = @"\\d{2/\\d{2}";
BOOL ifMeches = [self customMeches:tfStr ToRegexStr:dateRegexStr];
if (ifMeches == YES)
{
[[[UIAlertView alloc]initWithTitle:nil message:@"成功" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
else
{
[[[UIAlertView alloc]initWithTitle:nil message:@"失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
break;
}
case 4:
{
//数字
NSString *numberRegexStr = @"\\d{2/\\d{2}";
BOOL ifMeches = [self customMeches:tfStr ToRegexStr:numberRegexStr];
if (ifMeches == YES)
{
[[[UIAlertView alloc]initWithTitle:nil message:@"成功" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
else
{
[[[UIAlertView alloc]initWithTitle:nil message:@"失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
break;
}
case 5:
{
//年月日
NSString *yearRegexStr = @"\\d{1,2}.\\d{1,2}.\\d{4}";
BOOL ifMeches = [self customMeches:tfStr ToRegexStr:yearRegexStr];
if (ifMeches == YES)
{
[[[UIAlertView alloc]initWithTitle:nil message:@"成功" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
else
{
[[[UIAlertView alloc]initWithTitle:nil message:@"失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
break;
}
case 6:
{
//时间
NSString *timeRegexStr = @"\\d{1,2}:\\d{1,2}";
BOOL ifMeches = [self customMeches:tfStr ToRegexStr:timeRegexStr];
if (ifMeches == YES)
{
[[[UIAlertView alloc]initWithTitle:nil message:@"成功" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
else
{
[[[UIAlertView alloc]initWithTitle:nil message:@"失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
}
break;
}
default:
break;
}
NSLog(@"用户输入完成");
//键盘返回
[textField resignFirstResponder];
return YES;
}
-(BOOL)customMeches:(NSString *)meches ToRegexStr:(NSString *)regexstr
{
BOOL ifMeches;
NSPredicate *acconut = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regexstr];
ifMeches = [acconut evaluateWithObject:meches];
return ifMeches;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end