zoukankan      html  css  js  c++  java
  • 多个相似的控件之间的便利与字符的拼接

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

    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;
    }
    
  • 相关阅读:
    [转]Spring的IOC原理[通俗解释一下]
    自我介绍
    什么是存储过程
    Linux 之 最常用的20条命令
    [转]sql语句中出现笛卡尔乘积 SQL查询入门篇
    mysql 多表连接
    正则表达式
    postman 测试API
    [转]mysql 视图
    数据库 修改统一显示时间
  • 原文地址:https://www.cnblogs.com/angongIT/p/4182367.html
Copyright © 2011-2022 走看看