首页 > 代码库 > 多个相似的控件之间的便利与字符的拼接

多个相似的控件之间的便利与字符的拼接

技术分享

 

形如这样的输入会员卡卡好的,要求输入的数字一一对应

1、 要定义的变量

/// 临时变量@property(nonatomic , strong)UITextField * tempFiled;/// 标记@property (nonatomic ,assign) int  tempTag;/// 存储文本框@property (nonatomic, strong) NSMutableArray *textFieldArrayM;/// 临时文字是数组@property (nonatomic, copy) NSMutableArray *numberArrayM;/// 文本框的标记@property (nonatomic, assign) NSInteger numInField;/// 输入的卡号@property (nonatomic, strong) NSString * cardNumber;

 

-(NSMutableArray *)numberArrayM{    if (!_numberArrayM) {        _numberArrayM = [NSMutableArray arrayWithObjects:@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",nil];    }    return _numberArrayM;}-(NSMutableArray *)textFieldArrayM{    if(!_textFieldArrayM)    {        _textFieldArrayM = [NSMutableArray array];    }    return _textFieldArrayM;}

 2、添加视图

// 标题    UILabel * topView = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.bgScrollView.width, kHeightOfTextField)];    topView.backgroundColor = [UIColor colorWithRed:(157 / 255.0) green:( 157 / 255.0) blue:( 157 / 255.0) alpha:1.0];    topView.textColor = [UIColor whiteColor];    topView.textAlignment = NSTextAlignmentLeft;    topView.text = @"   请输入您的会员卡号";    topView.font = [UIFont systemFontOfSize:16];    [self.bgScrollView addSubview:topView];        UIImageView * cardNumImage = [[UIImageView alloc]initWithFrame:CGRectMake(kSpace, topView.bottom + kSpace, self.bgScrollView.width- (2*kSpace), kHeightOfTextField)];    cardNumImage.image = [UIImage imageNamed:@"kahaobang"];    cardNumImage.userInteractionEnabled = YES;    [self.bgScrollView addSubview:cardNumImage];        // 输入框    for (int i = 0; i < kTextFiledNumber ; i ++) {                CGFloat textFiledW = (self.bgScrollView.width- (2*kSpace))/10;        UITextField * cardNumTextFiled = [[UITextField alloc]initWithFrame:CGRectMake(kSpace+(i * textFiledW), topView.bottom + kSpace, textFiledW, kHeightOfTextField)];        cardNumTextFiled.borderStyle = UITextBorderStyleNone;        cardNumTextFiled.textAlignment = NSTextAlignmentCenter;        cardNumTextFiled.keyboardType =  UIKeyboardTypeNumberPad;        cardNumTextFiled.delegate = self;        cardNumTextFiled.tag = i;          [self.textFieldArrayM addObject:cardNumTextFiled];        [self.bgScrollView addSubview:cardNumTextFiled];    }   /// 第一响应者    [[self.textFieldArrayM firstObject]becomeFirstResponder];        // 确定按钮    UIButton * sureButton = [UIButton buttonWithType:UIButtonTypeCustom];    sureButton.frame = CGRectMake(kSpace, cardNumImage.bottom + (3*kSpace), self.bgScrollView.width - (2*kSpace), kHeightOfTextField);    [sureButton setBackgroundImage:[UIImage imageNamed:@"log_red_bg"] forState:UIControlStateNormal];    [sureButton setTitle:@"确定" forState:UIControlStateNormal];    [sureButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];    sureButton.titleLabel.font = [UIFont systemFontOfSize:16];    [self.bgScrollView addSubview:sureButton];    [sureButton addTarget:self action:@selector(sureClicked) forControlEvents:UIControlEventTouchUpInside];

 

/** * @brief 点击确定按钮 */-(void)sureClicked{    if(self.numInField < kTextFiledNumber)    {        [[DMCAlertCenter defaultCenter] postAlertWithMessage:@"请输入完整..."];        for (UITextField *textField in self.textFieldArrayM)        {            if([textField.text isEqualToString:@""])            {                [textField becomeFirstResponder];                break;            }        }    }    else    {        NSMutableString *appendString = [NSMutableString string];        for (NSString *string in self.numberArrayM) {            [appendString appendString:string];        }        [[DMCAlertCenter defaultCenter] postAlertWithMessage:appendString];    }   }#pragma 代理方法-(void)textFieldDidBeginEditing:(UITextField *)textField{    if (self.tempFiled == nil){       [textField becomeFirstResponder];        self.tempFiled = textField;    }    else if (self.tempFiled !=nil && self.tempFiled == textField){        [self.tempFiled becomeFirstResponder];            }    else if (self.tempFiled!= textField && self.tempFiled!=nil){        [textField becomeFirstResponder];        self.tempFiled = textField;    }}/** * @brief 文字改变,文本长度大于1就会自动跳转到下一个 */-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    NSString *allString = [textField.text stringByAppendingString:string];    if(allString.length > 1)    {        textField.text = [allString substringToIndex:1];        return NO;    }    if(![string isEqualToString:@""])    {        self.numInField++;        [self.numberArrayM replaceObjectAtIndex:textField.tag withObject:string];        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{            if(textField.tag < kTextFiledNumber)            {                for (UITextField *textField in self.textFieldArrayM) {                    if([textField.text isEqualToString:@""])                    {                        [textField becomeFirstResponder];                        break;                    }                }            }            if (self.numInField == kTextFiledNumber) {                [self.view endEditing:YES];            }        });    }else    {        self.numInField--;         [self.numberArrayM replaceObjectAtIndex:textField.tag withObject:@""];        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{            if(textField.tag < kTextFiledNumber)                [self.textFieldArrayM[textField.tag] becomeFirstResponder];        });    }        return YES;}

 

多个相似的控件之间的便利与字符的拼接