首页 > 代码库 > 多个相似的控件之间的便利与字符的拼接
多个相似的控件之间的便利与字符的拼接
形如这样的输入会员卡卡好的,要求输入的数字一一对应
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;}
多个相似的控件之间的便利与字符的拼接
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。